我对VBA很陌生,我不知道如何在潜艇之间使用变量。代码应该是非常自我解释的:
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
有没有办法可以在两个潜艇中使用strWeapon?我没有在第二个子中定义变量strWeapon时出错。 谢谢!
答案 0 :(得分:3)
你有几个选择。
您可以使用shai rado提到的公共变量 - 这可能是最简单的,但是您应尽可能限制使用公共变量。
您可以将变量从一个子传递到另一个子,如下所示:
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
或者,如果您要传递多个变量,那么您可能会更好地使用课程,此选项需要的工作量比我愿意投入的更多,但CPearson有一个很好的入门课程。
答案 1 :(得分:1)
是的!
Public strWeapon as String
在任何模块的顶部,执行以下操作:
tpye Option Explicit
然后紧接下面,放入公开声明。
然后,这可以在excel项目中的任何其他子例程OR模块中使用