簡體   English   中英

如何在Excel VBA中使用ComboBox值作為條件自動過濾列

[英]How to Auto Filter a column using ComboBox value as Criteria in Excel VBA

我有一個電子表格,其中包含電話品牌和電話型號的列表(電話品牌在A列中,而電話型號在B列中)

我正在嘗試做一個ActiveX程序,該程序允許用戶從ComboBox1和Filter列A中使用ComboBox1的值選擇電話品牌。

這是我到目前為止的內容:

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列,並將其作為組合框中的值列表。 現在,根據組合框中的值,您需要在列中顯示該品牌的手機型號列表(例如,列I)

步驟1:從組合框中選擇電話品牌。 請參考以下示例VBA-獲取組合框的選定值

步驟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作為phone_brand第一列(9)中。

getPhoneBrandFromComboBox()函數是第一步使用鏈接中給出的幫助編寫的函數。 此功能返回使用comboBox選擇的電話品牌

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM