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.

Data

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

ArrowInsertingListBox

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

ArrowPropertiesDialogBox

ArrowPropertiesDialogBox-2

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

ArrowCommandButton

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.

ArrowAssigningMacro

AssigningMacro

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]