Nhiều lựa chọn hộp danh sách trong Excel VBA
Thuộc tính MultiSelect trong Excel VBA cho phép người dùng chọn nhiều mục trong hộp danh sách. Userform mà chúng ta sẽ tạo ra như sau:
Để tạo Biểu mẫu người dùng này, hãy thực hiện các bước sau.
-
Mở Trình soạn thảo Visual Basic. Nếu Project Explorer không hiển thị, hãy bấm View, Project Explorer.
-
Nhấp vào Chèn, Biểu mẫu người dùng. Nếu Hộp công cụ không tự động xuất hiện, hãy bấm Xem, Hộp công cụ. Màn hình của bạn sẽ được thiết lập như bên dưới.
-
Thêm các hộp danh sách (đầu tiên ở bên trái, thứ hai ở bên phải), các nút lệnh, hộp kiểm (đầu tiên ở bên trái, thứ hai ở bên phải), khung và các nút tùy chọn (đầu tiên ở trên cùng, thứ hai ở dưới đầu tiên, v.v.). Khi điều này đã được hoàn thành, kết quả sẽ phù hợp với hình ảnh của Biểu mẫu người dùng được hiển thị trước đó. Ví dụ: tạo điều khiển hộp danh sách bằng cách nhấp vào ListBox từ Hộp công cụ. Tiếp theo, bạn có thể kéo một hộp danh sách trên Biểu mẫu người dùng. Khi bạn đến khung ‘Chọn Loại’, hãy nhớ vẽ khung này trước khi bạn đặt ba nút tùy chọn vào đó.
-
Bạn có thể thay đổi tên và chú thích của các điều khiển. Tên được sử dụng trong mã VBA Excel. Phụ đề là những thứ xuất hiện trên màn hình của bạn. Bạn nên thay đổi tên của các điều khiển, nhưng không cần thiết ở đây vì chúng ta chỉ có một số điều khiển trong ví dụ này. Để thay đổi chú thích của Biểu mẫu người dùng, các nút lệnh, hộp kiểm, khung và nút tùy chọn, hãy nhấp vào Chế độ xem, Cửa sổ thuộc tính và nhấp vào từng điều khiển.
-
Để hiển thị Biểu mẫu người dùng, hãy đặt một nút lệnh trên trang tính của bạn và thêm dòng mã sau:
Private Sub CommandButton1_Click() UserForm1.Show End Sub
Bây giờ chúng ta sẽ tạo Sub UserForm_Initialize. Khi bạn sử dụng phương thức Hiển thị cho Biểu mẫu người dùng, phụ này sẽ tự động được thực thi.
-
Mở Trình soạn thảo Visual Basic.
-
Trong Project Explorer, nhấp chuột phải vào UserForm1 và sau đó nhấp vào View Code.
-
Đầu tiên, khai báo biến i kiểu Integer. Khai báo biến trong phần Khai báo chung (ở đầu đoạn mã). Bằng cách này, bạn chỉ phải khai báo biến một lần và bạn có thể sử dụng chúng trong nhiều con.
Dim i As Integer
-
Chọn Userform từ danh sách thả xuống bên trái. Chọn Khởi tạo từ danh sách thả xuống bên phải.
-
Thêm các dòng mã sau:
Private Sub UserForm_Initialize() With ListBox1 .AddItem "Sales" .AddItem "Production" .AddItem "Logistics" .AddItem "Human Resources" End With OptionButton3.Value = True End Sub
Giải thích: hộp danh sách đầu tiên sẽ được lấp đầy và nút tùy chọn thứ ba được đặt làm mặc định.
Bây giờ chúng tôi đã tạo phần đầu tiên của Biểu mẫu người dùng. Mặc dù nó trông đã gọn gàng rồi, nhưng sẽ không có gì xảy ra khi chúng ta nhấp vào các nút lệnh hoặc các điều khiển khác.
-
Trong Project Explorer, nhấp đúp vào UserForm1.
-
Nhấp đúp vào nút Thêm.
-
Thêm các dòng mã sau:
Private Sub CommandButton1_Click() For i = 0 To ListBox1.ListCount - 1 If ListBox1.Selected(i) = True Then ListBox2.AddItem ListBox1.List(i) Next i End Sub
Giải thích: Excel VBA lặp lại qua hộp danh sách đầu tiên (danh sách số chỉ mục bằng không (0) cho mục đầu tiên trong danh sách) và nếu được chọn, sẽ thêm mục vào hộp danh sách thứ hai.
-
Nhấp đúp vào nút Xóa.
-
Thêm các dòng mã sau:
Private Sub CommandButton2_Click() Dim counter As Integer counter = 0 For i = 0 To ListBox2.ListCount - 1 If ListBox2.Selected(i - counter) Then ListBox2.RemoveItem (i - counter) counter = counter + 1 End If Next i CheckBox2.Value = False End Sub
Giải thích: Excel VBA lặp lại qua hộp danh sách thứ hai và nếu được chọn, sẽ xóa mục. Biến bộ đếm lưu theo dõi số lượng mục đã loại bỏ.
-
Nhấp đúp vào nút tùy chọn đầu tiên.
-
Thêm các dòng mã sau:
Private Sub OptionButton1_Click() ListBox1.MultiSelect = 0 ListBox2.MultiSelect = 0 End Sub
-
Nhấp đúp vào nút tùy chọn thứ hai.
-
Thêm các dòng mã sau:
Private Sub OptionButton2_Click() ListBox1.MultiSelect = 1 ListBox2.MultiSelect = 1 End Sub
-
Nhấp đúp vào nút tùy chọn thứ ba.
-
Thêm các dòng mã sau:
Private Sub OptionButton3_Click() ListBox1.MultiSelect = 2 ListBox2.MultiSelect = 2 End Sub
Giải thích: cài đặt ‘Chọn Loại’ có thể được chọn bằng cách nhấp vào các nút tùy chọn. Hình ảnh của Biểu mẫu người dùng được hiển thị trước đó cung cấp mô tả về từng cài đặt. Thay vì định cấu hình cài đặt này trong thời gian chạy, bạn cũng có thể định cấu hình cài đặt này tại thời điểm thiết kế. Để đạt được điều này, hãy nhấp chuột phải vào điều khiển hộp danh sách, sau đó nhấp vào Thuộc tính. Đặt thuộc tính MultiSelect thành 0 – fmMultiSelectSingle, 1 – fmMultiSelectMulti hoặc 2 – fmMultiSelectExtented.
-
Nhấp đúp vào hộp kiểm đầu tiên.
-
Thêm các dòng mã sau:
Private Sub CheckBox1_Click() If CheckBox1.Value = True Then For i = 0 To ListBox1.ListCount - 1 ListBox1.Selected(i) = True Next i End If If CheckBox1.Value = False Then For i = 0 To ListBox1.ListCount - 1 ListBox1.Selected(i) = False Next i End If End Sub
Giải thích: bằng cách chọn hộp kiểm đầu tiên, tất cả các mục của hộp danh sách đầu tiên có thể được chọn / bỏ chọn.
-
Nhấp đúp vào hộp kiểm thứ hai để thêm các dòng mã giống nhau.
Chỉ thay thế CheckBox1 bằng CheckBox2 và ListBox1 bằng ListBox2.