Excel VBA Ifelse语句

时间:2016-05-03 03:24:32

标签: excel vba excel-vba

我正在研究一个简单的宏,只需按一下按钮就可以根据定义的参数运行选定的宏。

我在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

2 个答案:

答案 0 :(得分:2)

您发布的代码已将所有If..Then ... ElseIf逻辑注释掉,因此它将运行Macro1,然后立即运行Macro2。因此,它可能看起来只有Macro2已经运行。

如果您的实际代码不同,请逐步调试调试器并查看Range(" A2")。在进行比较时实际包含的值。

答案 1 :(得分: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

尝试将您的实际代码放在此处,看看它是否有效。