我是vba的新手。我需要有更多经验的人来看这个,用4秒钟来教育我。 :)
我的问题是第一部分是好的(如下所示)。基于单元格D5中的名称(如Don或Keith),我希望进行排序。对于第一部分,它起作用。
此部分有效
Sheets("Input Tab").Select
Range("D5").Select
If Selection.Value = "Don" Then
Sheets("Cost Center Comparison").Range("$A$5:$P$815").AutoFilter Field:=2, Criteria1:=Array("10" _
, "11", "12", "13", "14", "15", "20", "21", "30", "51", "52", "54", "55", "57", "58", "60"), Operator:=xlFilterValues
此处ElseIf
的问题
然后我想回到同一个单元格(D5)继续评估它。如果名称发生变化,过滤器也会发生变化。
ElseIf Sheets("Input tab").Range("D5").Selection.Value = "Job/Bob" Then
Sheets("Cost Center Comparison").Range("$A$5:$P$815").AutoFilter Field:=2, Criteria1:=Array("12"), Operator:=xlFilterValues
ElseIf
由于某种原因不起作用,我不太了解语法,无法知道原因。有什么帮助吗?
答案 0 :(得分:1)
这样的事情对你来说可能会更好......
Sub FilterOnName()
Dim nm As String, arr As Variant
nm = ActiveWorkbook.Sheets("Input Tab").Range("D5").Value
Select Case nm
Case "Don": arr = Array("10", "11", "12", "13", "14", "15", _
"20", "21", "30", "51", "52", "54", _
"55", "57", "58", "60")
Case "Job/Ron": arr = Array("12")
'Case Else: define a default here if no match
End Select
If Not IsEmpty(arr) Then
ActiveWorkbook.Sheets("Cost Center Comparison").Range("$A$5:$P$815") _
.AutoFilter Field:=2, Criteria1:=arr, Operator:=xlFilterValues
End If
End Sub