我有一个电子表格,其中包含手机品牌和手机型号列表(手机品牌在A栏,手机型号在B栏)
我试图做一个ActiveX程序,允许用户使用ComboBox1的值从ComboBox1和Filter列A中选择一个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的值来过滤它。 任何帮助将不胜感激。
答案 0 :(得分:1)
到目前为止,您只获得了A列的手机品牌列表,并将它们(独特品牌)写入H列,并将其作为Combobox中的值列表。现在根据组合框中的值,您需要在列中显示属于该品牌的手机型号列表(比如第I列)
第1步:获取从组合框中选择的手机品牌。请参阅此示例VBA - Get Selected Value of 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
的内容写入
getPhoneBrandFromComboBox()
函数是使用link中给出的帮助在第一步中编写的函数。此功能返回使用comboBox