我真的是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
但是我真的不知道该说些什么来取得积极的结果。
在此先感谢大家为我提供帮助。
答案 0 :(得分:0)
您可以使用范围的查找方法查看是否存在
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