2013-08-21 3 views
1

У меня есть подпрограмма, которая вызывает другую подпрограмму для определенных мест и создает сводные таблицы. Я просто понял, что если в моих исходных данных нет данных для определенного места, макрос выйдет из строя. Я хотел бы настроить некоторые операторы If then, чтобы он не пытался и не выполнял конкретный оператор вызова, если это место не существует. Вот подпрограмма:Need If statement для проверки диапазона ячеек

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 на листе под названием «Raw Data». Поэтому, если в этой области не существует «Музыкальная библиотека», я не хочу, чтобы строка Call LocationPivot («Музыкальная библиотека») запускалась. Затем он должен перейти к следующей строке вызова и выполнить тот же тест, но для этого имени местоположения.

+3

Может быть, вы должны добавить, что регистрация в 'LocationPivot' подпрограммы? – RBarryYoung

+0

'If IsError (Application.Match (str, Sheets (« Raw Data »). Range (« EF4: EF500 »), False)) Затем Exit 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

Смежные вопросы