[英]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.