我正在研究一个简单的宏,只需按一下按钮就可以根据定义的参数运行选定的宏。
我在A2上用1,2。
设置了这个单元格基本上,下面代码的逻辑在A2为值1时起作用,它将运行宏1,如果A2为值2,则它将运行宏2。 但是,当我运行此脚本时,无论A2值是什么,它都将始终运行宏2。
我已经研究过并发现我的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 :(得分:2)
您发布的代码已将所有If..Then ... ElseIf逻辑注释掉,因此它将运行Macro1,然后立即运行Macro2。因此,它可能看起来只有Macro2已经运行。
如果您的实际代码不同,请逐步调试调试器并查看Range(" A2")。在进行比较时实际包含的值。
答案 1 :(得分:1)
这是您想要实现的一个简单示例
我使用了Form Control
并将代码放在Module
。
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
尝试将您的实际代码放在此处,看看它是否有效。