Hộp danh sách VBA

Trong VBA, bạn có thể tạo Hộp danh sách nơi người dùng có thể chọn một trong các tùy chọn được liệt kê. Hộp danh sách thường được sử dụng trong Biểu mẫu người dùng, nhưng cũng có thể được sử dụng trong Trang tính. Trong hướng dẫn này, bạn sẽ học cách tạo, điền và xóa Listbox. Bạn cũng sẽ thấy cách lấy lựa chọn của người dùng trong VBA và sử dụng nó trong mã.

Nếu bạn muốn tìm hiểu cách tạo ComboBox, hãy nhấp vào đây: VBA ComboBox

Nếu bạn muốn tìm hiểu cách tạo Hộp kiểm, hãy nhấp vào đây: Hộp kiểm VBA

Tạo một hộp danh sách

Để chèn một Hộp danh sách trong Trang tính, bạn cần phải đi tới Tab nhà phát triển, nhấp chuột Chèn và trong Điều khiển ActiveX, hãy chọn Hộp danh sách:

Hình ảnh 1. Chèn một hộp danh sách trong trang tính

Khi bạn chọn Hộp danh sách mà bạn đã chèn, bạn có thể nhấp vào Tính chất Bên dưới Tab nhà phát triển:

Hình ảnh 2. Thay đổi thuộc tính hộp danh sách

Tại đây bạn có thể đặt các thuộc tính khác nhau của Hộp danh sách. Ngay từ đầu, chúng tôi đã thay đổi thuộc tính Tên đến lstListBox. Bây giờ, chúng ta có thể sử dụng Listbox với tên này trong mã VBA.

Điền một hộp danh sách trong mã VBA

Đầu tiên, chúng ta cần điền các giá trị vào Listbox. Trong hầu hết các trường hợp, Hộp danh sách cần được điền khi Sổ làm việc được mở. Bởi vì điều này, chúng tôi cần đặt một mã để điền Listbox vào đối tượng Sách bài tập, thủ tục Mở ra. Thủ tục này được thực hiện mỗi khi người dùng mở Workbook. Đây là mã:

123456789 Với Sheet1.lstListBox.AddItem "John".AddItem "Michael".AddItem "Jennifer".AddItem "Lilly".AddItem "Robert"Kết thúc với

Như bạn có thể thấy trong Hình ảnh 3, chúng tôi đã điền Listbox của mình với 5 tên (John, Michael, Jennifer, Lilly và Robert):

Hình ảnh 3. Điền vào hộp danh sách trong VBA

Điền vào một hộp danh sách từ một phạm vi ô

Một cách khả thi khác để điền Listbox là để người dùng thực hiện. Hộp danh sách có thể được liên kết với phạm vi ô. Do đó, mỗi khi người dùng nhập một giá trị mới vào phạm vi ô, Hộp danh sách sẽ cập nhật với giá trị đó.

Nếu bạn muốn kích hoạt tính năng này, bạn phải truy cập vào Tính chất của ListBox và đặt thuộc tính ListFillRange:

Hình 4. Điền vào hộp danh sách từ phạm vi ô

Chúng tôi đã liên kết Hộp danh sách của mình với phạm vi E2: E5, nơi chúng tôi đặt những cái tên mà chúng tôi muốn (Nathan, Harry, George, Roberta). Kết quả là, Hộp danh sách bây giờ được điền với những tên này.

Nhận một mục đã chọn của hộp danh sách trong VBA

Mục đích của Listbox là để có được sự lựa chọn của người dùng. Để truy xuất giá trị do người dùng chọn, bạn cần sử dụng mã này:

123 Dim strSelectedItem As VariantstrSelectedItem = Sheet1.lstListBox.Value

Lựa chọn người dùng nằm trong thuộc tính Giá trị của Sheet1.lstListbox sự vật. Giá trị này được gán cho biến strSelectedItem:

Hình ảnh 5. Nhận một giá trị đã chọn từ Hộp danh sách trong VBA

Chúng tôi đã chọn Harry trong hộp danh sách và thực hiện thủ tục. Như bạn có thể thấy trong Hình 5, giá trị của strSelectedItemHarry, là giá trị chúng tôi đã chọn. Hơn nữa, bạn có thể xử lý biến này trong mã.

Xóa hộp danh sách

Để xóa Listbox trong VBA, bạn cần sử dụng Sạch phương pháp của Sheet1.lstListBox sự vật. Nó sẽ xóa tất cả các mục khỏi Hộp danh sách. Đây là mã:

1 Sheet1.lstListBox.Clear

Khi chúng tôi thực thi mã, chúng tôi nhận được Listbox trống:

Hình ảnh 6. Xóa hộp danh sách

Sử dụng Hộp danh sách trong Biểu mẫu người dùng

Như chúng tôi đã đề cập, Listbox thường được sử dụng nhất trong Biểu mẫu người dùng. Để giải thích cách bạn có thể làm điều đó, trước tiên chúng tôi sẽ chèn một Biểu mẫu người dùng. Trong trình soạn thảo VBA, nhấp chuột phải vào Tên mô-đun, nhấp vào Chèn và lựa chọn UserForm:

Hình ảnh 7. Chèn biểu mẫu người dùng

Để hiển thị các điều khiển để chèn, bạn cần bật Hộp công cụ. Để làm điều này, hãy nhấp vàoHộp công cụ trên thanh công cụ. Sau đó, bạn sẽ nhận được các cửa sổ với tất cả các điều khiển có sẵn. Bạn có thể nhấp vào ListBox để tạo nó trong Biểu mẫu người dùng.

Hình ảnh 8. Chèn một hộp danh sách trong biểu mẫu người dùng

Chúng tôi sẽ đặt tên là ComboBox cmbComboBox. Để điền vào nó các giá trị, chúng ta cần đặt đoạn mã sau vào phương thức Khởi tạo của đối tượng UserForm:

12345678910111213 Private Sub UserForm_Initialize ()Với UserForm1.lstListBox.AddItem "John".AddItem "Michael".AddItem "Jennifer".AddItem "Lilly".AddItem "Robert"Kết thúc vớiKết thúc Sub

Mã này kích hoạt mỗi khi người dùng chạy Biểu mẫu người dùng và điền vào Hộp danh sách với 5 tên sau:

Hình 9. Hộp danh sách với các giá trị trong Biểu mẫu người dùng

Nếu bạn muốn nhận giá trị đã chọn từ ComboBox, bạn cần sử dụng logic tương tự cho Combobox trong Trang tính, được giải thích trước đó trong bài viết.

Bạn sẽ giúp sự phát triển của trang web, chia sẻ trang web với bạn bè

wave wave wave wave wave