有没有办法在模块之间使用局部变量?

Cut*_*ter 6 excel vba excel-vba

我有一个带有Module和Userform的VBA项目.我想在我的Userform中使用模块中的一些变量.

我是否有必要在全球范围内声明这些变量?我不喜欢全局变量,因为它们留在代码的执行完毕后的记忆,我有我的宏开始到这些变量一个接一个复位.我不能使用关键字End来清除内存中的变量,因为我需要记住这些变量中的一个或两个.人们通常如何做?

编辑:有没有办法将变量从Userform传递给模块而不创建全局变量?

Dic*_*ika 6

在userform中创建一个公共属性,并使用该属性将变量传递到表单中.Useforms只是类模块,除了它们有一个用户界面组件.示例:在您的userform的代码模块中

Option Explicit

Private msLocalVar As String

Public Property Get LocalVar() As String
    LocalVar = msLocalVar
End Property

Public Property Let LocalVar(sLocalVar As String)
    msLocalVar = sLocalVar
End Property

Private Sub CommandButton1_Click()

    Me.LocalVar = Me.LocalVar & " more strings attached"

    Me.Hide

End Sub
Run Code Online (Sandbox Code Playgroud)

并在标准模块中

Sub ShowForm()

    Dim sLocalVar As String
    Dim ufUserForm1 As UserForm1

    sLocalVar = "Some string"

    Set ufUserForm1 = New UserForm1
    ufUserForm1.LocalVar = sLocalVar 'pass in variable
    ufUserForm1.Show

    'This executes after the .Hide in the form
    Debug.Print ufUserForm1.LocalVar

    'Close out the form - previously just hidden
    Unload ufUserForm1

End Sub
Run Code Online (Sandbox Code Playgroud)