[英]How to AutoFilter using IF conditions on VBA
我真的是VBA的新手,但是我陷入了無法在線查看的過濾功能。
我基本上建立了一個登錄表單,該表單允許不同的用戶登錄后在“報告表”上看到不同的數據。在“報告表”中,我有兩列“ P”和“ Q”,其中報告了一些名稱。
比方說:
P Q
User1 User2
Paul Bob
Martin Martin
Bob Bob
Tom Martin
Ralph Bob
然后,我在VBA上使用了以下代碼:
Private Sub Worksheet_Activate()
Range("Report!$F$6:$Y$11").CurrentRegion.AutoFilter Field:=12, Criteria1:=Range("G3").Value
End Sub
** G3是名稱的參考單元格*
現在,如果我使用該代碼登錄Bob,結果將是:
P Q
User1 User2
Paul Bob
Bob Bob
Ralph Bob
那是對的! 但是,如果我嘗試用Paul登錄,則沒有結果可用,因為他不在Field:= 12(列“ Q”)上。
我想做這樣的事情:如果Paul不在“ Q”列上,請停止過濾該列,然后開始過濾“ P”列。
我嘗試過:
Private Sub Worksheet_Activate()
If Range("Report!$F$6:$Y$11").CurrentRegion.AutoFilter(Field:=12, Criteria1:=Range("G3").Value) Then 'do nothing
Else
Range("Report!$F$6:$Y$11").CurrentRegion.AutoFilter Field:=11, Criteria1:=Range("G3").Value
End If
End Sub
但我真的不知道該說些什么來取得積極的結果。
在此先感謝所有對我有幫助的人。
您可以使用范圍的查找方法來查看是否存在
Option Explicit
Public Sub test()
Dim found As Range
Set found = Worksheets("Report!").Range("$Q$6:$Q$11").Find(what:=Range("G3").Value, lookat:=xlWhole)
If Not found Is Nothing Then
' Stuff with Field:=12, Criteria1:=Range("G3").Value)
Else
' Stuff with Field:=11, Criteria1:=Range("G3").Value)
End If
End Sub
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.