Vba 在窗体初始化期间,从另一窗体上的publicvariable设置局部变量

Vba 在窗体初始化期间,从另一窗体上的publicvariable设置局部变量,vba,excel,Vba,Excel,我试图在用户窗体初始化期间设置数组。我正在用另一个用户表单上创建的公共变量填充数组。问题是,当我在表单初始化期间尝试设置数组中的值时,它们不会填充。如果我在按钮上使用相同的代码,它就像一个符咒 代码 Private Sub UserForm_Initialize() 'Declare local Variables Dim targetGrades(1 To 5) As String 'Set Variables targetGrades(1) = frmSettingsSetup.g1 tar

我试图在用户窗体初始化期间设置数组。我正在用另一个用户表单上创建的公共变量填充数组。问题是,当我在表单初始化期间尝试设置数组中的值时,它们不会填充。如果我在按钮上使用相同的代码,它就像一个符咒

代码

Private Sub UserForm_Initialize()
'Declare local Variables
Dim targetGrades(1 To 5) As String
'Set Variables
targetGrades(1) = frmSettingsSetup.g1
targetGrades(2) = frmSettingsSetup.g2
targetGrades(3) = frmSettingsSetup.g3
targetGrades(4) = frmSettingsSetup.g4
targetGrades(5) = frmSettingsSetup.g5

End Sub

当我运行代码时,变量为=“以及从frmSettingsSetup(g1-g5)中提取的公共变量。有没有办法在表单初始化期间从另一个表单调用变量?

为了解决这个问题,我创建了一个名为Globals的模块,并在那里声明了我的全局变量。这使得无论表单状态如何都可以访问变量。

为什么不使用getter和setter?请参阅问题的答案。初始化其他表单时,
frmSettingsSetup
是否打开?如果没有,那么它不会得到任何值,因为没有。表单是类,如果它没有打开,则显示没有要获取的实例值。frmSettingsSetup被隐藏但没有关闭
frmSettingsSetup.Hide
当我初始化另一个表单时。只需将
msgbox frmSettingsSetup.g1
放在初始化中,然后查看返回的值。当我添加该代码时,消息框返回正确的值。我可以创建一个变量,它会为变量指定正确的值,但是当我尝试像上面那样填充数组时,每个项都会留空。