2016-05-03 9 views
-1

Ich arbeite an einem einfachen Makro, das mit einem Klick auf eine Schaltfläche das ausgewählte Makro basierend auf dem definierten Parameter ausführt.Excel VBA Ifelp-Anweisung

Ich habe diese Zelle Setup auf A2 mit 1,2.

Grundsätzlich funktioniert die Logik des folgenden Codes, wenn A2 Wert 1 ist, wird es Makro 1 ausführen und wenn A2 Wert 2 ist, wird es Makro 2 ausführen. Allerdings, wenn ich dieses Skript ausführen, wird es immer Makro ausführen 2 unabhängig davon, was A2-Wert ist.

Ich habe recherchiert und gefunden, dass meine Syntax für vba elseif korrekt ist, aber ich konnte nicht verstehen, was schief gelaufen ist. Kann mir jemand helfen?

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

Welche Art von Taste verwenden Sie? Wo hast du deinen Code abgelegt? – L42

Antwort

2

Der Code, den Sie geschrieben haben, hat das alles Wenn..dann ... ElseIf Logik Kommentar gesetzt, so dass es Makro1 und unmittelbar danach Makro2 laufen wird. Daher sieht es möglicherweise so aus, als ob nur Macro2 ausgeführt wurde.

Wenn Ihr tatsächlicher Code anders ist, durchlaufen Sie den Debugger und sehen Sie, welcher Bereich ("A2"). Wert enthält tatsächlich, wenn es darum geht, den Vergleich zu tun.

1

Dies ist ein einfaches Beispiel für das, was Sie erreichen möchten.
I verwendet Form Control

enter image description here

Und den Code setzen in einem 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 

Versuchen Sie, Ihren eigentlichen Code in hier setzen und sehen, ob es funktioniert.

+0

Ich werde diesen Code auch ausprobieren! Danke für Ihre Hilfe! Wirklich schätzen – user3003490