gpt4 book ai didi

vba - 有没有办法跨模块使用局部变量?

转载 作者:行者123 更新时间:2023-12-02 05:24:01 25 4
gpt4 key购买 nike

我有一个带有模块和用户窗体的 VBA 项目。我想在我的用户表单中使用模块中的一些变量。

我是否有必要在全局范围内声明这些变量?我不喜欢全局变量,因为它们在代码执行后保留在内存中,并且我必须在宏开始时一一重置这些变量。我无法使用关键字 End 从内存中清除变量,因为我需要记住其中一两个变量。人们通常怎么做?

编辑:有没有办法将变量从用户窗体传递到模块而不创建全局变量?

最佳答案

在用户表单中创建一个公共(public)属性,并使用该属性将变量传递到表单中。用例只是类模块,只不过它们有一个用户界面组件。示例:在用户表单的代码模块中

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

并在标准模块中

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

关于vba - 有没有办法跨模块使用局部变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9889202/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com