Chọn nhiều giá trị từ hộp Danh sách bằng VBA trong Microsoft Excel
Trong bài viết này, chúng ta sẽ học cách tạo một hộp danh sách trong đó chúng ta có thể chọn nhiều tên và có thể lấy dữ liệu cần thiết từ dữ liệu chính.
Hãy cùng hiểu với bài tập đơn giản: – Chúng tôi đã lấy dữ liệu mà chúng tôi có chi tiết id email cho mọi nhân viên.
Làm theo các bước dưới đây để tạo hộp danh sách cung cấp tùy chọn lựa chọn nhiều lựa chọn bằng mã VBA: –
Hộp danh sách chèn
Để chèn Hộp Danh sách trên trang tính Excel, Chuyển đến tab Nhà phát triển> Nhấp vào Chèn> và sau đó Nhấp vào nút Hộp danh sách trong Điều khiển ActiveX
Trên tab Nhà phát triển, nhấp vào Chế độ thiết kế để kích hoạt thiết kế, sau đó nhấp vào Thuộc tính trong tab Nhà phát triển, hộp thoại Thuộc tính sẽ xuất hiện.
Chọn hộp Danh sách, sau đó đi đến hộp thoại Thuộc tính. Nhấp vào tab Đã phân loại. Dưới tiêu đề Misc, hãy chuyển đến thuộc tính ListFillRange và chỉ định phạm vi chứa các giá trị cho Hộp danh sách.
Trong tiêu đề Hành vi, thay đổi thuộc tính Multiselect thành 1-fmMultiSelectMulti
Bây giờ, chèn hai nút lệnh trên trang tính Excel, Đi tới tab Nhà phát triển> Nhấp vào Chèn> và sau đó Nhấp vào biểu tượng Nút trong Điều khiển biểu mẫu
Nhấp chuột phải vào Nút và chọn Thuộc tính văn bản Chỉnh sửa và đổi tên hai nút thành “Bỏ chọn tên” và “Gửi”.
Nhấn phím Alt + F11 để mở Visual basic Editor Thêm mô-đun mới và chèn mã bên dưới vào mô-đun.
‘Mã hóa Đoạn mã trên chứa hai thủ tục GettingSelectedItems và UnselectedItems. Gán thủ tục Bắt nút Chọn tên để Gửi và quy trình Nút Bỏ chọn Mục để Bỏ chọn Tên.
Sau khi gán thủ tục, hãy tắt chế độ thiết kế bằng cách nhấp vào nút chế độ thiết kế trên tab Nhà phát triển.
Giải thích logic
Trong ví dụ này, mục tiêu của chúng tôi là tìm nạp id email của tên được người dùng chọn trong cột Hộp danh sách thành L.
Người dùng có thể chọn nhiều tên trong Hộp danh sách. Sau khi chọn tên, người dùng sẽ nhấn nút gửi và id email tương ứng với tên đã chọn trong Hộp danh sách sẽ xuất hiện ở cột L trên trang tính Excel.
Nếu người dùng muốn bỏ chọn tất cả các tên đã chọn trong Hộp danh sách, người dùng có thể nhấp vào nút “Bỏ chọn tên”.
Để đạt được mục tiêu trên, chúng tôi đã sử dụng công thức và quy trình excel.
Thủ tục GettingSelectedItems được viết để lấy tên đã chọn từ Hộp danh sách cho phạm vi K10 đến K23.
Để lấy id email cho tên đã chọn, chúng tôi đã sử dụng công thức Excel sau: – = IFERROR (VLOOKUP (K10, $ A $ 10: $ B $ 23,2,0), “”)
Chèn công thức trên vào ô L10 và sao chép và dán công thức này trong phạm vi từ L10 đến L23.
Công thức này sẽ cung cấp id email bằng cách tra cứu tên đã chọn trong phạm vi A10 đến B23.
Chúng tôi đã ẩn các giá trị trong phạm vi K10 đến K23 bằng cách sử dụng cùng một màu cho phông chữ và nền của ô.
Vui lòng theo dõi bên dưới để biết mã
Option Explicit Sub GettingSelectedItems() 'Getting selected items in ListBox1 Application.ScreenUpdating = False 'Declaring varialbes Dim ValueSelected As String, i, r As Integer 'deleting selected values Range("K10:K23").Select Selection.ClearContents 'Defining listbox1 of sheet TestDialog With Sheets("TestDialog").ListBox1 r = 0 'Using For loop for looping through all the items in List Box For i = 0 To .ListCount - 1 'Using .selected for selecting only those value which is selected by user in listbox If .Selected(i) Then 'Assigning selected value of List Box to Column K on the sheet Cells(r + 10, 11).Value = .List(i) r = r + 1 End If Next i End With Range("L10").Select End Sub Sub UnselectedItems() 'Unselecting all the items in the list box Application.ScreenUpdating = False 'Declaring varialbes Dim ValueSelected As String, i As Integer 'Defining listbox1 of sheet TestDialog With Sheets("TestDialog").ListBox1 'Using For loop for looping through all the items in List Box For i = 0 To .ListCount - 1 'Unselecting all the items in the list .Selected(i) = False Next i End With 'Deleting data from range K10 to K23 Range("K10:K23").Select Selection.ClearContents Range("L10").Select End Sub
Nếu bạn thích blog này, hãy chia sẻ nó với bạn bè của bạn trên Facebook và Facebook.
Chúng tôi rất muốn nghe ý kiến từ bạn, hãy cho chúng tôi biết cách chúng tôi có thể cải thiện công việc của mình và làm cho nó tốt hơn cho bạn. Viết thư cho chúng tôi [email protected]