Viết vòng lặp cho Private sub (1 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

theanhtran

Thành viên mới
Tham gia
6/8/07
Bài viết
7
Được thích
1
Anh chị trong diễn đàn giúp em với. Em muốn viết công thức lặp cho Private sub như sau: Em có 7 combobox em đặt tên là CBboxCB1-->7 ( tên cán bộ 1 tới 7) tương ứng với mail của tưng người là từ TxtboxM1-->7. Em định viết thủ tục để mỗi Private sub CbboxCBi ( I chạy từ 1 tới 7)_change . Khi đó khi mình chon tên theo list của combobox thì txtbox mail sẽ tự động điền theo người đó. Các bạn có thể xem file đính kèm. Nêu viết từng cái một sẽ rất dài nên rất mong các bạn giúp để viết công thức lặp cho nhanh. Thanks trước nhé cả nhà !:)
 

File đính kèm

Anh chị trong diễn đàn giúp em với. Em muốn viết công thức lặp cho Private sub như sau: Em có 7 combobox em đặt tên là CBboxCB1-->7 ( tên cán bộ 1 tới 7) tương ứng với mail của tưng người là từ TxtboxM1-->7. Em định viết thủ tục để mỗi Private sub CbboxCBi ( I chạy từ 1 tới 7)_change . Khi đó khi mình chon tên theo list của combobox thì txtbox mail sẽ tự động điền theo người đó. Các bạn có thể xem file đính kèm. Nêu viết từng cái một sẽ rất dài nên rất mong các bạn giúp để viết công thức lặp cho nhanh. Thanks trước nhé cả nhà !:)

File của bạn chưa có tí code nào, biết gì mà giúp
Bạn dự định viết 7 code cho ComboBox thì cứ việc viết đi, đưa lên đây rồi mọi người sẽ rút gọn cho bạn
 
Upvote 0
Anh chị trong diễn đàn giúp em với. Em muốn viết công thức lặp cho Private sub như sau: Em có 7 combobox em đặt tên là CBboxCB1-->7 ( tên cán bộ 1 tới 7) tương ứng với mail của tưng người là từ TxtboxM1-->7. Em định viết thủ tục để mỗi Private sub CbboxCBi ( I chạy từ 1 tới 7)_change . Khi đó khi mình chon tên theo list của combobox thì txtbox mail sẽ tự động điền theo người đó. Các bạn có thể xem file đính kèm. Nêu viết từng cái một sẽ rất dài nên rất mong các bạn giúp để viết công thức lặp cho nhanh. Thanks trước nhé cả nhà !:)

Nhìn trong Form của bạn, tôi chẳng thấy cái tên nào như bạn nói: "CBboxCB1-->7 ( tên cán bộ 1 tới 7) tương ứng với mail của tưng người là từ TxtboxM1-->7"

Với cấu trúc trong form, thì vòng lặp sẽ lặp như thế nào? Bởi chọn 1 ComboBox (CBX) thì sẽ tương ứng với 1 TextBox (TBX), chẳng có liên quan gì đến CBX khác thì làm sao thể hiện được vòng lặp? Nguồn lấy từ đâu, cơ chế hoạt động như thế nào, thì bạn phải nói rõ hơn đi, chứ như bạn miêu tả và file tương ứng thì không cần vòng lặp gì cả! Cứ chọn tên nào thì cột thứ 2 của CBB sẽ là giá trị của TBX tương ứng.
 
Upvote 0
File của bạn chưa có tí code nào, biết gì mà giúp
Bạn dự định viết 7 code cho ComboBox thì cứ việc viết đi, đưa lên đây rồi mọi người sẽ rút gọn cho bạn
Em thực sự chưa biết viết kiểu gì. ý e muốn viết theo ý tưởng của a Hoàng Trọng Nghĩa. Tức là khi ta chọn CBboxCB1-change. Chọn một tên cán bộ nào đó thì TxtboxM (mail) sẽ tự động điền vào đó tương ứng với cột 2 của CBBox. Nhưng e chưa biết viết nó như thế nào. Vì ở đây có 7 CBboxCB nếu làm 7 lần như thế nhìn sẽ rối nên em mới nghĩ nếu mà làm đc vòng lặp thì ta chỉ cần viết ngắn gọn thay vì 7 Private sub. Rất mong được 2 anh giúp :)
 
Upvote 0
Em thực sự chưa biết viết kiểu gì. ý e muốn viết theo ý tưởng của a Hoàng Trọng Nghĩa. Tức là khi ta chọn CBboxCB1-change. Chọn một tên cán bộ nào đó thì TxtboxM (mail) sẽ tự động điền vào đó tương ứng với cột 2 của CBBox. Nhưng e chưa biết viết nó như thế nào. Vì ở đây có 7 CBboxCB nếu làm 7 lần như thế nhìn sẽ rối nên em mới nghĩ nếu mà làm đc vòng lặp thì ta chỉ cần viết ngắn gọn thay vì 7 Private sub. Rất mong được 2 anh giúp :)

Nếu bạn chưa biết viết code, tôi nghĩ bạn nên thiết kế form với 1 ComboBox + 1 TextBox rồi từ từ nghiên cứu... Đằng này, bạn vẽ cho cả đống để bây giờ rối đầu (mà nhìn dữ liệu cũng chẳng biết phải giúp bạn thế nào cả) ---> Chẳng lẽ bắt người ta làm cho bạn từ A đến Z?
 
Upvote 0
Em thực sự chưa biết viết kiểu gì. ý e muốn viết theo ý tưởng của a Hoàng Trọng Nghĩa. Tức là khi ta chọn CBboxCB1-change. Chọn một tên cán bộ nào đó thì TxtboxM (mail) sẽ tự động điền vào đó tương ứng với cột 2 của CBBox. Nhưng e chưa biết viết nó như thế nào. Vì ở đây có 7 CBboxCB nếu làm 7 lần như thế nhìn sẽ rối nên em mới nghĩ nếu mà làm đc vòng lặp thì ta chỉ cần viết ngắn gọn thay vì 7 Private sub. Rất mong được 2 anh giúp :)

Viết cho bạn bằng ClassModule đây!

Toàn bộ thủ tục trong Class:

PHP:
Option Explicit
Public WithEvents CbxChange As MSForms.ComboBox

Private Sub CbxChange_Change()
    With CbxChange
        If .MatchFound Then
            usfNhap(Replace(.Name, "cbxCB", "tbxMail")) = .List(, 1)
        Else
            usfNhap(Replace(.Name, "cbxCB", "tbxMail")) = ""
        End If
    End With
End Sub

Toàn bộ thủ tục trong Form:

PHP:
Option Explicit
Private ObjCbxChange(1 To 7) As New clsCBX

Private Sub UserForm_Initialize()
    Dim arrCanBo As Variant, n As Byte
    With Sheets("PERSONAL LIST")
        arrCanBo = Range(.Range("D10"), .Range("D65536").End(xlUp)).Resize(, 2).Value
    End With
    For n = 1 To 7
        Me("cbxCB" & n).List = arrCanBo
        Set ObjCbxChange(n).CbxChange = Me("cbxCB" & n)
    Next
End Sub

Private Sub UserForm_Terminate()
    Erase ObjCbxChange
End Sub

Private Sub cmdESC_Click()
    Unload Me
End Sub

Đó là viết theo yêu cầu của bạn, việc còn lại, bạn tự lo nhé!
 

File đính kèm

Upvote 0
Viết cho bạn bằng ClassModule đây!

Toàn bộ thủ tục trong Class:

PHP:
Option Explicit
Public WithEvents CbxChange As MSForms.ComboBox

Private Sub CbxChange_Change()
    With CbxChange
        If .MatchFound Then
            usfNhap(Replace(.Name, "cbxCB", "tbxMail")) = .List(, 1)
        Else
            usfNhap(Replace(.Name, "cbxCB", "tbxMail")) = ""
        End If
    End With
End Sub

Toàn bộ thủ tục trong Form:

PHP:
Option Explicit
Private ObjCbxChange(1 To 7) As New clsCBX

Private Sub UserForm_Initialize()
    Dim arrCanBo As Variant, n As Byte
    With Sheets("PERSONAL LIST")
        arrCanBo = Range(.Range("D10"), .Range("D65536").End(xlUp)).Resize(, 2).Value
    End With
    For n = 1 To 7
        Me("cbxCB" & n).List = arrCanBo
        Set ObjCbxChange(n).CbxChange = Me("cbxCB" & n)
    Next
End Sub

Private Sub UserForm_Terminate()
    Erase ObjCbxChange
End Sub

Private Sub cmdESC_Click()
    Unload Me
End Sub

Đó là viết theo yêu cầu của bạn, việc còn lại, bạn tự lo nhé!

Đợt này trình VBA của anh Hoàng Trọng Nghĩa cao phết đấy %#^#$
 
Upvote 0

Bài viết mới nhất

Back
Top Bottom