簡體   English   中英

如何在VBA上使用IF條件自動篩選

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

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