2013-08-21 37 views
1

我有一个子程序调用另一个子例程的特定位置并创建数据透视表。我刚刚意识到,如果我的原始数据中没有特定位置的数据,宏将崩溃。我想设置一些If语句,以便它不会尝试运行特定的Call语句,除非该位置存在。这里的子程序:需要If语句来检查单元格范围

Sub EachLocationPivot() 

    Call LocationPivot("Barker Library") 
    Call LocationPivot("Dewey Library") 
    Call LocationPivot("Hayden Library") 
    Call LocationPivot("Music Library") 
    Call LocationPivot("Rotch Library") 

    End Sub 

位置名称信息可在范围EF4发现:EF500一个叫做“原始数据”表。因此,如果位置“音乐库”在该范围内不存在,我不希望线路呼叫LocationPivot(“音乐库”)运行。然后它应该进入下一个呼叫线路并执行相同的测试,但对于该位置名称。

+3

也许你应该将该检查添加到'LocationPivot'子例程? – RBarryYoung

+0

'如果IsError(Application.Match(str,Sheets(“Raw Data”)。Range(“EF4:EF500”),False))然后退出Sub' - 其中'str'是任何你需要的变量名参数在'LocationPivot'子例程中。 –

回答

0

这非常接近你所需要的。 c probabaly应该是一个变体...

With Worksheets("Raw Data").Range("EF4:EF500") 
    Set c = .Find("Barker Library") 
    If Not c Is Nothing Then 
     Call LocationPivot("Barker Library") 
    End If 
End With 
+0

工作很好。谢谢! –

+0

太棒了!您可以点击绿色朝下的箭头,然后点击向上箭头,如果您发现它有帮助,请“接受”答案?谢谢, – Jim

+0

你可以点击绿色的向下箭头,然后点击向上箭头,如果你发现它有帮助,请“接受”答案?谢谢,吉姆 – Jim