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