2016-05-03 6 views
-1

Я работаю над простым макросом, который с cllick кнопки запускает выбранный макрос на основе определенного параметра.Excel VBA Ifelse statement

У меня есть эта настройка ячейки на A2 с 1,2.

В принципе, логика приведенного ниже кода работает, когда A2 является значением 1, он будет запускать макрос 1, и если A2 является значением 2, он будет запускать макрос 2. Однако, когда я запускаю этот скрипт, он всегда будет запускать макрос 2 независимо от значения A2.

Я исследовал и нашел свой синтаксис для vba elseif правильно, но я не мог понять, что пошло не так. Кто-нибудь может мне помочь?

Sub buttonclick() 

Dim Num As Integer 
Num1 = 1 
Num2 = 2 
' if Range("A2").Value = Num1 Then 
    Call Macro1 
' ElseIf Range("A2").Value = Num2 Then 
    Call Macro2 
' Else 

' End If 

End Sub 



Sub Macro1() 
' 
' Macro1 Macro 
' 
    Sheets("Presentation_LO&Ev").Select 
    ActiveSheet.Range("$A$8:$K$151").AutoFilter Field:=5, Criteria1:="A" 

End Sub 


Sub Macro2() 
' 
' Macro2 Macro 
' 
' 
    Sheets("Presentation_LO&Ev").Select 
    ActiveSheet.Range("$A$8:$K$151").AutoFilter Field:=5, Criteria1:="B" 
End Sub 
+0

Какой тип кнопки вы используете? Где вы поместили свой код? – L42

ответ

2

Код, который вы выложили уже вся логика If..Then ... ElseIf прокомментировал, так что он будет работать Macro1 и сразу же после этого Macro2. Поэтому может показаться, что только Macro2 запущен.

Если ваш фактический код отличается от другого, пройдите через отладчик и посмотрите, какой диапазон («A2»). Фактически, значение имеет значение, когда дело доходит до сравнения.

1

Это простой пример того, чего вы хотите достичь.
Я использовал Form Control

enter image description here

И поместить код в Module.

enter image description here

Sub MacroToBeAssignedOnTheButton() 
    With Sheets("Sheet1") 'Replace with your actual sheet name 
     If .Range("A1").Value2 = 1 Then Macro1 Else Macro2 
    End With 
End Sub 

Private Sub Macro1() 
    MsgBox "Macro1 Ran" 'Replace with your actual code 
End Sub 

Private Sub Macro2() 
    MsgBox "Macro2 Ran" 'Replace with your actual code 
End Sub 

Попробуйте поместить свой фактический код здесь и посмотреть, если он работает.

+0

Я тоже попробую этот код! Спасибо за вашу помощь! Очень ценю – user3003490

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