【问题标题】:How to Auto Filter a column using ComboBox value as Criteria in Excel VBA如何在 Excel VBA 中使用 ComboBox 值作为条件自动过滤列
【发布时间】:2015-01-12 15:19:52
【问题描述】:

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

我正在尝试做一个 ActiveX 程序,它允许用户从 ComboBox1 中选择一个电话品牌,并使用 ComboBox1 的值过滤列 A。

这是我目前所拥有的:

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 中的唯一值填充组合框 1,但我不知道如何使用组合框 1 的值对其进行过滤。 任何帮助将不胜感激。

【问题讨论】:

    标签: vba excel autofilter


    【解决方案1】:

    到目前为止,您仅从 A 列获得了手机品牌列表,并将它们(唯一品牌)写入 H 列,并将其作为值列表放入 Combobox。现在根据组合框中的值,您需要在一列(比如第一列)中显示属于该品牌的手机型号列表

    第 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列的所有手机型号,将品牌价值为phone_brand的型号写在I列(9)

    getPhoneBrandFromComboBox() 函数是使用链接中给出的帮助在第一步中编写的函数。此函数返回使用组合框选择的手机品牌

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多