Hộp danh sách VBA - Mục đã chọn

Bài viết này sẽ trình bày cách làm việc với mục đã chọn trong Hộp danh sách trong Excel VBA.

Hộp Danh sách được sử dụng phần lớn trong các biểu mẫu VBA nhưng cũng có thể được sử dụng trong trang tính Excel của bạn. Chúng hiển thị danh sách các tùy chọn cho người dùng, một hoặc nhiều tùy chọn trong số đó người dùng có thể chọn.

Tạo hộp danh sách trong một biểu mẫu VBA

Để tạo một hộp danh sách trong một biểu mẫu VBA, trước tiên chúng ta cần tạo UserForm.

Khi bạn đã tạo biểu mẫu của mình, hãy chọn điều khiển Hộp Danh sách trong hộp công cụ, sau đó kéo để tạo hộp danh sách trên biểu mẫu của bạn.

Thêm giá trị vào Hộp danh sách

Trong sự kiện Khởi tạo biểu mẫu, hãy nhập mã sau. Hộp Danh sách sẽ chọn các giá trị được lưu trữ trong một Dải ô trong Trang tính Excel của bạn.

123456 Private Sub UserForm_Initialize ()Dim rng As RangeĐối với mỗi rng trong phạm vi ("A1: A50")Me.lstState.AddItem rng.ValueRng tiếp theoKết thúc Sub

Khi chúng tôi chạy biểu mẫu, hộp danh sách sẽ được hiển thị như minh họa trong hình ảnh bên dưới:

Chọn Giá trị từ Hộp Danh sách

Theo mặc định, một giá trị duy nhất có thể được chọn trong Hộp danh sách trong biểu mẫu người dùng. Tuy nhiên, điều này có thể được sửa đổi bằng cách thay đổi thuộc tính Multi-Select của hộp danh sách.

Bấm vào hộp danh sách để chọn nó, sau đó trong cửa sổ Thuộc tính, thay đổi Thuộc tính Đa Chọn từ 0-frmMultiSelectSingle đến 1-frmMultiSelectMulti.

Bây giờ khi chúng ta chạy biểu mẫu, chúng ta có thể chọn nhiều hơn một tùy chọn trong Hộp Danh sách.

Nếu chúng tôi thay đổi tùy chọn thành 2-frmMultiSelectExtended, điều đó có nghĩa là chúng ta có thể chọn một trong các giá trị và sau đó, giữ phím SHIFT, chọn một giá trị khác trong danh sách, và tất cả các mục giữa 2 giá trị đã chọn cũng sẽ được chọn.

Lập trình VBA | Code Generator làm việc cho bạn!

Làm việc với các giá trị đã chọn trong VBA

Tùy thuộc vào loại tùy chọn chúng tôi đã sử dụng cho thuộc tính Đa lựa chọn trong Hộp danh sách, có một số cách chúng tôi có thể sử dụng giá trị hoặc các giá trị đã chọn trong hộp danh sách trong Mã VBA.

Gán giá trị cho một biến

Chúng ta có thể sử dụng After_Update sự kiện của hộp danh sách để gán giá trị đã chọn cho một biến.

Đầu tiên, chúng ta hãy tạo một biến mức mô-đun ở đầu mô-đun biểu mẫu.

Bên dưới dòng chữ, Tùy chọn rõ ràng, tạo biến chuỗi sau.

1 Dim strState dưới dạng chuỗi.

Khi chúng ta đã tạo biến này, chúng ta có thể bấm đúp vào hộp Danh sách để chuyển đến mã đằng sau biểu mẫu, hoặc chúng ta có thể bấm vào nút mã trong VBE Editor.

Sự kiện Nhấp chuột của hộp danh sách sẽ được tạo tự động. Chọn After_Update Sự kiện tạo thành danh sách các Thủ tục có sẵn.

Trong sự kiện After_Update, hãy nhập mã sau:

123 Private Sub lstState_AfterUpdate ()strState = Me.lstStateKết thúc Sub

LƯU Ý: Bạn có thể xóa sự kiện Nhấp chuột vì nó không bắt buộc.

Bây giờ, nếu chúng ta chạy biểu mẫu và nhấp vào hộp danh sách, giá trị đã chọn sẽ được lưu trữ trong biến. Để kiểm tra điều này, chúng tôi có thể đặt một điểm BREAK trong mã.

Bây giờ khi chúng tôi chạy biểu mẫu, nếu chúng tôi nhấp vào hộp danh sách, mã sẽ chuyển sang chế độ GỠ LỖI và dừng lại tại điểm ngắt của chúng tôi. Sau đó, nếu chúng ta nhấn F8 trên bàn phím để di chuyển thêm một bước trong mã, biến sẽ được điền vào mục đã chọn trong danh sách.

Chúng ta có thể xem giá trị này bằng cách đặt chuột vào biến.

HOẶC

Chúng ta có thể xem giá trị trong Cửa sổ ngay lập tức.

Bạn mệt mỏi với việc tìm kiếm ví dụ về mã VBA? Hãy thử AutoMacro!

Sử dụng một nút lệnh để trả lại giá trị cho Excel

Đầu tiên, chúng ta tạo một nút lệnh trên biểu mẫu để có nút OK để trả lại giá trị hoặc các giá trị đã chọn trong hộp danh sách sang Excel.

Chọn điều khiển Nút lệnh, sau đó bấm và kéo trong biểu mẫu của bạn để tạo nút.

Trong cửa sổ Thuộc tính, thay đổi tên của nút thành cmdOKvà thay đổi Chú thích và Bộ tăng tốc của nút.

Mục đích của Accelerator là để người dùng sử dụng bàn phím để kích hoạt nút, trong trường hợp này Alt + O sẽ kích hoạt nút.

Để nút lệnh hoạt động, chúng ta cần thêm mã phía sau nó để khi nhấp vào nút, mã chạy. Đây được gọi là sự kiện Click của nút.

Để đến sự kiện nhấp chuột, hãy nhấp đúp vào nút trong giao diện thiết kế của biểu mẫu. Sự kiện nhấp chuột sẽ được tạo tự động vì đây là sự kiện thường được sử dụng cho các nút Lệnh.

Nhập mã sau vào sự kiện nhấp của nút lệnh.

123 Sub riêng tư cmdOK_Click ()Phạm vi ("E1") = strStateKết thúc Sub

Mã sẽ chọn biến mà chúng tôi đã khai báo trong sự kiện After_Update của ListBox và trả về giá trị cho Phạm vi trong Excel.

Ngoài ra, chúng ta có thể lấy giá trị trực tiếp từ Hộp danh sách mà không cần sử dụng biến.

123 Sub riêng tư cmdOK_Click ()Phạm vi ("E1") = me.lstStateKết thúc Sub

Khi chúng tôi chạy biểu mẫu, giá trị đã chọn sẽ được trả về Excel khi chúng tôi nhấp vào nút OK.

Chọn nhiều giá trị

Nếu chúng tôi đã đặt thuộc tính multi-select của hộp danh sách thành 1 hoặc 2 cho phép chúng tôi chọn nhiều giá trị trong danh sách, thì mã để chọn các giá trị này hơi khác một chút.

Các After_Update sự kiện không còn được kích hoạt khi chọn các giá trị trong hộp danh sách - do đó chúng tôi không thể sử dụng sự kiện này.

Chúng ta vẫn có thể sử dụng sự kiện nhấp vào nút lệnh, nhưng chúng ta cần lặp lại các giá trị đã chọn trong hộp danh sách để đưa chúng trở lại Excel.

Trong nút lệnh Nhấp vào sự kiện, hãy nhập mã sau.

12345678910 Sub riêng tư cmdOK_Click ()Dim x As IntegerPhạm vi ("E1"). ChọnĐối với x = 0 To Me.lstState.ListCount - 1If Me.lstState.Selected (x) = True Sau đóActiveCell = Me.lstState.List (x)ActiveCell.Offset (1, 0) .SelectKết thúc nếuTiếp theo xKết thúc Sub

Bây giờ khi chúng tôi chạy biểu mẫu, chỉ các giá trị được chọn sẽ được trả về trang tính Excel.

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