2015-08-10 3 views
0

У меня есть оператор IF Else, который проверяет наличие электронной таблицы в книге. Если он существует, он предназначен для запуска определенных макросов, а затем останавливается. Если таблица не существует, она должна работать до конца оператора IF, а затем генерировать MSGBOX с сообщением об ошибке.Запуск макросов и завершение, если условия оператора выполнены

Я не могу закончить утверждение IF, как только условие будет выполнено, и макрос запустился.

Код:

Dim k As Integer 
Dim t As String 
Dim x As Integer 

k = Sheets.Count 
x = 1 

    While x <= k 
     t = Sheets(x).Name 
     If t = "Details" Then 

      Call Details_1 

     Else 

      x = x + 1 

     End If 

    Wend 

    If x > k Then 

     MsgBox "Something seems to have gone wrong." & vbCrLf & "Please ensure that you have pressed 'Button 1' before you press any of the other buttons", vbOKOnly, "ERROR MESSAGE" 

    End If 

ответ

1

Я предполагаю, что вы имеете в виду, что вызывает Details_1, а затем продолжает цикл While, который вы не хотите. Если да, то я хотел бы предложить вам изменить свой код, чтобы что-то вроде этого:

Dim k As Integer 
Dim t As String 
Dim x As Integer 

k = Sheets.Count 
x = 1 

Do While x <= k 
    t = Sheets(x).Name 
    If t = "Details" Then 

     Call Details_1 
     Exit Do 

    Else 

     x = x + 1 

    End If 

Loop 

If x > k Then 

    MsgBox "Something seems to have gone wrong." & vbCrLf & "Please ensure that you have pressed 'Button 1' before you press any of the other buttons", vbOKOnly, "ERROR MESSAGE" 

End If 

Этот код должен цикл через ваши листы до тех пор, пока не найдет подробную информацию, позвоните Details_1, а затем переходите к следующему разделу кода

0

Переместите x = x + 1 так, чтобы это было после первого End If. Прямо сейчас после вызова макроса x = x + 1 не выполняется, а x всегда < = k.

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