VBA Comment utiliser une variable entre des sous-marins?
Je suis assez nouveau à VBA et je ne sais pas comment utiliser une variable entre des sous-marins. Le code devrait être assez explicite:
Public Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim strWeapon As String
If Target.Address = "$I$8" Then
MsgBox "You pick up a sword"
strWeapon = "Sword"
ElseIf Target.Address = "$I$9" Then
MsgBox "You pick up a magic staff"
strWeapon = "Magic"
ElseIf Target.Address = "$I$10" Then
MsgBox "You pick up a bow and arrows"
strWeapon = "Bow"
End If
End Sub
Public Sub CommandButton1_Click()
If strWeapon = "Magic" Then
UserForm1.Show
ElseIf strWeapon = "Sword" Then
UserForm2.Show
ElseIf strWeapon = "Bow" Then
UseForm2.Show
End If
End Sub
Est-il une manière que je peux utiliser strWeapon dans les deux sous-marins? J'obtiens une erreur pour ne pas la définition de la variable strWeapon dans la deuxième sous.
Merci!!!!
- entendez-vous comme un
String
variable est mise à jour et peut être affiché dans les deuxSub
s ? vous pouvez utiliser lePublic strWeapon as String
, mettre cette ligne de code (pour conviniance) au-dessus de deuxSubs
, en vertu de laOption Explicit
- déclarer strWeapon à l'extérieur de la sub Worksheet_SelectionChange à l'échelle mondiale
- Je l'ai ajouté comme vous les gars vous dit de le faire et supprimé Dim strweapon comme une chaîne de caractères en haut et maintenant rien ne se passe lorsque je clique sur le bouton de commande
- où est votre
CommandButton1
? sur qui User_Form ? quel est exactement votre code supposé faire? - En seconde opinion, votre question est en réalité, "Comment puis-je garder une variable affectée après la sous-routine est fini", n'est-il pas?
Vous devez vous connecter pour publier un commentaire.
Vous avez quelques options.
Vous pouvez utiliser une variable publique comme shai rado a mentionné - c'est probablement la plus facile, néanmoins il est conseillé de limiter l'utilisation de variables publiques lorsque cela est possible.
Vous pouvez passer la variable de l'un des sous à une autre, comme ceci:
Sinon, si vous disposez de plusieurs variables à passer, vous pourriez être mieux avec une classe, cette option prend plus de travail que je suis prêt à mettre ici, mais CPearson a un bon cours d'introduction pour eux.
oui!
Public strWeapon as String
En haut de n'importe quel module, procédez de la manière suivante:
tpye
Option Explicit
alors immédiatement ci-dessous, placez la déclaration Publique.cela peut ensuite être utilisé dans toute autre sous-programme OU un module dans votre projet en format excel