▶ We have used 4 dependent combo boxes (dependent drop down lists) in this
study again. We filtered the data on the sheet with combo boxes,and pulled
filtered results into listbox. If desired ,the filtered data can be copied with
button to other pages.
In the drop-down lists, the unique values are sorted in ascending order. We used ADO Connection to do all these operations quickly.
In the drop-down lists, the unique values are sorted in ascending order. We used ADO Connection to do all these operations quickly.
✔️ To be able to faster the
filtering process, we used ADO (ActiveX Data Objects). ADO is a subset
of the Visual Basic programming language specifically designed for
communicating with databases.
✔️ To avoid compatibility problems between 32bit and 64bit ,we
organized codes as follows :
✔️ When the cursor hovers on combo boxes, they are
opened as automatically. For this ,following codes :
✔️ Codes that allow conditional cascading dependent drop-down lists to run:
Private Sub Userform_initialize()
Set con = CreateObject("adodb.connection")
#If VBA7 And Win64 Then
con.Open "provider=microsoft.ace.oledb.12.0;data source=" & ThisWorkbook.FullName & ";extended properties=""excel 12.0;hdr=no"""
#Else
con.Open "provider=Microsoft.jet.oledb.4.0;data source=" & ThisWorkbook.FullName & ";extended properties=""excel 8.0;hdr=no"""
#End If
Call Combo("")
End Sub
Private Sub ComboBox1_Change()
If Not ComboBox1.Text = "" Then
Call Listbox
Call Combo(sql)
End If
End Sub
Private Sub ComboBox2_Change()
If Not ComboBox2.Text = "" Then
Call Listbox
Call Combo(sql)
End If
End Sub
Private Sub ComboBox3_Change()
If Not ComboBox3.Text = "" Then
Call Listbox
Call Combo(sql)
End If
End Sub
Private Sub ComboBox4_Change()
If Not ComboBox4.Text = "" Then
Call Listbox
Call Combo(sql)
End If
End Sub
Private Sub ComboBox3_Change()
If Not ComboBox3.Text = "" Then
Call Listbox
Call Combo(sql)
End If
End Sub
Private Sub ComboBox4_Change()
If Not ComboBox4.Text = "" Then
Call Listbox
Call Combo(sql)
End If
End Sub
Set con = CreateObject("adodb.connection")
#If VBA7 And Win64 Then
con.Open "provider=microsoft.ace.oledb.12.0;data source=" & ThisWorkbook.FullName & ";extended properties=""excel 12.0;hdr=no"""
#Else
con.Open "provider=Microsoft.jet.oledb.4.0;data source=" & ThisWorkbook.FullName & ";extended properties=""excel 8.0;hdr=no"""
#End If
Call Combo("")
End Sub
Private Sub ComboBox1_Change()
If Not ComboBox1.Text = "" Then
Call Listbox
Call Combo(sql)
End If
End Sub
Private Sub ComboBox2_Change()
If Not ComboBox2.Text = "" Then
Call Listbox
Call Combo(sql)
End If
End Sub
Private Sub ComboBox3_Change()
If Not ComboBox3.Text = "" Then
Call Listbox
Call Combo(sql)
End If
End Sub
Private Sub ComboBox4_Change()
If Not ComboBox4.Text = "" Then
Call Listbox
Call Combo(sql)
End If
End Sub
Private Sub ComboBox3_Change()
If Not ComboBox3.Text = "" Then
Call Listbox
Call Combo(sql)
End If
End Sub
Private Sub ComboBox4_Change()
If Not ComboBox4.Text = "" Then
Call Listbox
Call Combo(sql)
End If
End Sub
Our template is ready for use .
Hi, great site, great examples.
ReplyDeleteThis one I want to use for something, but I have one problem. In my data base, two column are with numbers and I get error message "2147217913 Data type mismatch in criteria expression". What I need to change to avoid this error?