VBA 如何在 subs 之间使用变量?

Ric*_*cky 4 variables excel vba

我对 VBA 很陌生,我不知道如何在 subs 之间使用变量。代码应该是不言自明的:

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
Run Code Online (Sandbox Code Playgroud)

有没有办法可以在两个潜艇中使用 strWeapon ?我因未在第二个子项中定义变量 strWeapon 而出现错误。谢谢!

Use*_*716 7

你有几个选择。

  1. 您可以使用 shai rado 提到的公共变量 - 这可能是最简单的,但是您应该尽可能限制公共变量的使用。

  2. 您可以像这样将变量从一个子传递到另一个子:

    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
    
    Run Code Online (Sandbox Code Playgroud)
  3. 或者,如果你有多个变量要传递,你可能会更好地使用一个类,这个选项需要比我愿意在这里放的更多的工作,但是 CPearson 有一个很好的入门课程。