2016-05-03 294 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