I'm pretty new to VBA and I don't know how to use a variable between subs. The code should be pretty self explanatory:
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
Is there a way I can use strWeapon in both subs? I get an error for not defining the variable strWeapon in the second sub. Thank you!
You have a couple of options.
You can use a public variable as shai rado has mentioned- this is probably easiest, however you should limit the use of public variables where possible.
You can pass the variable from one sub to another like this:
sub Main()
dim strWeapon as string
strWeapon = "Fork"
WillIWin strWeapon
end sub
sub WillIWin(strWeapon as string)
select case strWeapon
case "Gun"
msgbox "Probably"
case "Sword"
msgbox "unlikely"
case "Fork"
Msgbox "Goodluck"
end select
End Sub
Alternatively if you have multiple variables to pass, you might be better with a class, this option takes more work than I'm willing to put in here, but CPearson has a good introductory course for them.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With