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 deux Subs ? vous pouvez utiliser le Public strWeapon as String , mettre cette ligne de code (pour conviniance) au-dessus de deux Subs , en vertu de la Option 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?
InformationsquelleAutor Ricky | 2016-12-01