如何自动筛选使用ComboBox值作为Excel VBA中的条件的列

我有一个电子表格,其中包含手机品牌和手机型号(手机品牌在A列,手机型号在B列)

我试图做一个ActiveX程序,允许用户使用ComboBox1的值从ComboBox1和Filter列A中select一个Phone品牌。

以下是我到目前为止:

Option Explicit Sub AdvFilter() Dim lw As Long Dim lr As Long lw = Range("A" & Rows.Count).End(xlUp).Row Range("A2:A" & lw).AdvancedFilter Action:=xlFilterCopy, CopyToRange:=Range("H1"), Unique:=True End Sub Private Sub ComboBox1_Change() Dim lr As Long Dim Sel As String lr = Range("H" & Rows.Count).End(xlUp).Row Sel = "H2:H" & lr ComboBox1.ListFillRange = Sel End Sub 

我能够填充来自列A的唯一值的comboBox1,但我无法弄清楚如何使用ComboBox1的值来过滤它。 任何帮助将不胜感激。

到目前为止,您只有A列的手机品牌列表,并将它们(独特品牌)写入H列,并将其作为Combobox中的值列表。 现在基于combobox中的值,您需要在列中显示属于该品牌的手机型号列表(比如第一列)

步骤1:获取从ComboBox中select的手机品牌。 参考这个例子VBA – 获取combobox的选定值

第2步:获取该手机品牌下的手机型号列表。 让我们说这个手机品牌是phone_brand

 Sub getPhoneModels() Dim iCol As Integer iCol = 1 Dim phone_brand As String phone_brand=getPhoneBrandFromComboBox() For i = 1 To Range("B" & Rows.Count).End(xlUp).Row If StrComp(.Cells(1, i), phone_brand) = 0 Then .Cells(9, iCol) = .Cells(1, i) iCol = iCol + 1 End If Next i End Sub 

上面的代码将遍历B列中的所有手机型号,并在品牌I(9) phone_brand品牌值写为phone_brand

getPhoneBrandFromComboBox()函数是使用链接中给出的帮助在第一步写入的函数。 此function返回使用comboboxselect的手机品牌