[UserForm]Combobox

Euler

Mod
Thành viên BQT
1. Combobox để làm gì?
Bạn muốn một list danh sách sổ ra để bạn chọn, và chúng ta nghĩ tới Combobox.
Bạn cần đăng nhập để thấy hình ảnh

2. Tạo Combobox như thế nào?
Ấn ALT+F11 để mở trình soạn thảo VBA.
Tại đây bạn chọn Insert UserForm.
Bạn cần đăng nhập để thấy hình ảnh



Trên khay công cụ chọn Combobox và kéo vào UserForm
Bạn cần đăng nhập để thấy hình ảnh


Chèn Combobox ta được:
Bạn cần đăng nhập để thấy hình ảnh


3. Nhập dữ liệu cho Combobox
Double Click vào Userform chứa Combobox và viết thủ tục sau:
Mã:
Private Sub UserForm_Initialize()
    With Me.ComboBox1
        .AddItem "Text1"
        .AddItem "Text2"
        .AddItem "Text3"
    End With
End Sub
Bạn cần đăng nhập để thấy hình ảnh

4. Kiểm chứng một số thông số hay dùng.
Ta tạo nút bấm Test và chèn code sau:
Mã:
Private Sub CommandButton1_Click()
       MsgBox ComboBox1.ListIndex
End Sub
Cho UserForm hiện lên và chọn Combobox là Text 1, ấn Test ra kết quả là 0. Tương tự Text2 cho kết quả là 1, Text3 là 2.
Ngược lại, nếu ta có các kết quả là 0,1,2 thì làm thế nào để cho hiện ra Text1,Text2, Text3?
Chạy code sau:
Mã:
Sub thinghiem()
    MsgBox UserForm1.ComboBox1.List(0)
End Sub
Ta được kết quả là Text1, tương tự nếu thay tham số trên là 1,2 ta được Text2, Text3.
Làm thế nào để biết combobox của chúng ta có bao nhiêu phần tử?
Chạy code sau cho chúng ta kết quả là 3.
Mã:
Sub thinghiem2()
    MsgBox UserForm1.ComboBox1.ListCount
End Sub
Nguồn tham khảo:
Mã:
https://www.sejuku.net/blog/37777
 

Yukino Ichikawa

Thành viên
Nếu các giá trị Add vào Combobox mà không có quy luật, chẳng hạn là những ký tự không liên quan gì tới nhau, khi đó ta có thể gán các ký tự này vào một string.
s = s1,s2,s3,s4,...
Rồi dùng để tách s thành các phần tử s1,s2,s3,... nạp vào mảng, dùng for~next để gán.
Ở đây mình giới thiệu thêm một cách khác, đó là dùng hàm .
Ví dụ dưới đây mình muốn gán tên các tháng vào Combobox1 :
Bạn cần đăng nhập để thấy hình ảnh

Code là:
Mã:
Private Sub UserForm_Initialize()
    Dim i As Integer
    For i = 1 To 12 Step 1
        ComboBox1.AddItem Choose(i, "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December")
    Next i
End Sub
 
Top