image

Chúng tôi biết cách tạo danh sách thả xuống xếp tầng trên trang tính bằng cách sử dụng xác thực dữ liệu. Nhưng làm cách nào để chúng ta tạo một hộp kéo thả xuống theo tầng trên biểu mẫu người dùng VBA. Đây là một trong những nhu cầu cơ bản. Trong bài này, chúng ta sẽ tìm hiểu cách tạo một combobox phụ thuộc trong VBA. === Logic Cho Combobox Phụ thuộc trong VBA Để tạo một combobox phụ thuộc trong VBA, chúng ta cần khởi tạo combobox dựa trên sự kiện của phần tử nguồn. Ví dụ: nếu một hộp tổ hợp phụ thuộc vào một nhóm nút radio, thì mã để tải hộp tổ hợp phụ thuộc sẽ chạy ngay sau khi ai đó chọn một nút radio. Hoặc nếu một hộp kết hợp phụ thuộc vào một hộp kết hợp khác thì tùy thuộc vào hộp kết hợp sẽ tải mỗi khi giá trị trong hộp kết hợp được thay đổi.

Lý thuyết đủ rồi. Hãy chuyển sang một ví dụ để xem nó hoạt động như thế nào.

ComboBox Tùy thuộc vào Combobox khác Tạo hai combobox. Đầu tiên, người ta nên liệt kê một vài tên của các quốc gia.

Cái kia sẽ liệt kê tên các tiểu bang của quốc gia đã chọn. Nếu người dùng thay đổi quốc gia trong hộp tổ hợp đầu tiên, danh sách hộp tổ hợp thứ hai sẽ được thay đổi.

Hãy tạo một biểu mẫu có hai hộp kết hợp với nhãn các quốc gia và tiểu bang và một nút lệnh để gửi đầu vào.

image

Hộp kết hợp đầu tiên nên liệt kê tên của các quốc gia và nó không phụ thuộc vào bất kỳ giá trị nào. Vì vậy, chúng tôi sẽ tải nó trong sự kiện form_intialize như chúng tôi làm cho khởi tạo combobox cơ bản.

Nhấp đúp vào biểu mẫu người dùng. Nó sẽ mở vùng mã hóa trong Đối tượng UserForm. Bây giờ từ menu thả xuống bên trái, hãy chọn biểu mẫu người dùng. Sau đó, từ menu thả xuống bên phải, chọn khởi tạo.

image

Tên phụ còn trống UserForm_Initialize () sẽ được chèn vào. Mọi thứ được viết trong sub này sẽ được thực thi trước khi biểu mẫu người dùng hiển thị.

Vì vậy, chúng tôi viết mã khởi tạo cho combobox ở đây.

Private Sub UserForm_Initialize()

countries = Array("India", "Nepal", "Bhutan", "Shree Lanka")

UserForm1.ComboBox1.List = states

End Sub

Chúng tôi đã khởi tạo combobox đầu tiên. Bất cứ khi nào bạn tải biểu mẫu người dùng, combox đầu tiên sẽ sẵn sàng với tên các quốc gia.

Bây giờ để tải combobox thứ hai, chúng ta cần xem giá trị nào được chọn trong combobox1 đầu tiên và chạy mã mỗi khi combobox1 thay đổi giá trị của nó. Đối với điều này, chúng tôi sẽ sử dụng sự kiện Combobox_AfterUpdate.

Từ menu thả xuống bên trái, chọn combobox1. Từ menu thả xuống bên phải, chọn AfterUpdate. Chúng tôi cũng có thể sử dụng sự kiện Thay đổi nhưng chúng tôi sẽ bám vào AfterUpdate trong bài viết.

Bây giờ viết đoạn mã dưới đây:

Private Sub ComboBox1_AfterUpdate()

Select Case ComboBox1.Value

Case "India":

states = Array("Delhi", "UP", "UK", "Gujrat", "Kashmir")

Case "Nepal":

states = Array("Arun Kshetra", "Janakpur Kshetra", "Kathmandu Kshetra",_

"Gandak Kshetra", "Kapilavastu Kshetra")

Case "Bhutan":

states = Array("Bumthang", "Trongsa", "Punakha", "Thimphu", "Paro")

Case "Shree Lanka":

states = Array("Galle", "Ratnapura", "Colombo", "Badulla", "Jaffna")

End Select



ComboBox2.List = states



End Sub

image

Để lưu trữ giá trị do người dùng chèn vào, hãy sử dụng nút gửi. Viết mã dưới đây vào nút lệnh gửi để lưu quốc gia và tiểu bang được người dùng chọn trên trang tính.

Private Sub CommandButton1_Click()

country = ComboBox1.Value

State = ComboBox2.Value

ThisWorkbook.Worksheets("sheet1").Range("G1") = country

ThisWorkbook.Worksheets("sheet1").Range("H1") = State

Unload Me

End Sub

Bây giờ để hiển thị biểu mẫu người dùng, hãy chèn một nút trên trang tính và viết mã bên dưới. Hoặc bạn có thể sử dụng một mô-đun đơn giản để hiển thị biểu mẫu người dùng.

Sub load_userform()

UserForm1.Show

End Sub

Bây giờ hãy chạy mã load_userform.

image

Nó hoạt động như thế nào?

Khi bạn chạy con có mã userform.show, VBA chạy các sự kiện userform_initialize ngay sau khi chạy lệnh userform.show. Trong sự kiện userform_intialize, chúng tôi đã khởi tạo combobox đầu tiên có danh sách các quốc gia. Sau đó, biểu mẫu được hiển thị cho người dùng.

Bây giờ khi người dùng chọn bất kỳ giá trị nào từ hộp kết hợp đầu tiên, sự kiện combobox1_AfterUpdate sẽ chạy. Sự kiện này chứa mã để kiểm tra giá trị nào được người dùng chọn trong combobox1 và dựa trên giá trị đó, nó thiết lập mảng trạng thái và khởi tạo các giá trị combobox2 với mảng trạng thái.

Vì vậy, các bạn, đây là cách bạn tạo một combobox xếp tầng trong biểu mẫu người dùng VBA. Tôi hy vọng tôi đã giải thích đủ và bài báo phục vụ mục đích của nó. Nếu bạn có bất kỳ nghi ngờ nào liên quan đến bài viết này hoặc bất kỳ chủ đề VBA nào, hãy hỏi tôi trong phần nhận xét bên dưới.

Bài viết liên quan:

Nó là một ngôn ngữ lập trình của Microsoft. Nó được sử dụng với các ứng dụng Microsoft Office như MSExcel, MS-Word và MS-Access trong khi các biến VBA là các từ khóa cụ thể.

Bạn muốn yêu cầu Excel không hiển thị cảnh báo này và xóa trang tính chết tiệt.

Bài viết phổ biến:

Chức năng Countif là cần thiết để chuẩn bị bảng điều khiển của bạn.