2016-05-03 402 views
-1

我正在處理一個簡單的宏,該按鈕的cllick將根據定義的參數運行選定的宏。Excel VBA Ifelse語句

我在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的邏輯註釋掉,因此它會運行Macro隨後馬上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