2016-05-03 1 views
-1

Je travaille sur une macro simple qui avec un clic d'un bouton lancera la macro sélectionnée en fonction du paramètre défini.Excel VBA Instruction Ifelse

J'ai cette configuration de cellule sur A2 avec 1,2. Fondamentalement, la logique du code ci-dessous fonctionne lorsque A2 est la valeur 1, il exécutera la macro 1 et si A2 est la valeur 2, il exécutera la macro 2. Cependant, quand je lance ce script, il exécutera toujours Macro 2 indépendamment de ce qu'est la valeur A2.

J'ai recherché et trouvé ma syntaxe pour vba elseif est correct mais je ne pouvais pas comprendre ce qui n'allait pas. Est-ce que quelqu'un peut m'aider?

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

Quel type de bouton utilisez-vous? Où avez-vous mis votre code? – L42

Répondre

2

Le code que vous avez mis en ligne a tous les If..Then ... logique ElseIf commenté, donc il fonctionnera Macro1 et immédiatement après Macro2. Par conséquent, il peut sembler que seule Macro2 a fonctionné. Si votre code actuel est différent, parcourez le débogueur et voyez ce que Range ("A2"). Value contient réellement quand il s'agit de faire la comparaison.

1

Ceci est un exemple simple de ce que vous voulez réaliser.
J'utilisé Form Control

enter image description here

et mettre le code dans un 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 

Essayez de mettre votre code réel ici et voir si cela fonctionne.

+0

Ill essayer ce code aussi! Merci de votre aide! Vraiment apprécié – user3003490