public 从 useform 加载的数组 vba
public array loaded from useform vba
我正在创建一个宏,我需要访问在模块中创建并填充在 useform(button_click 操作)中的数组。
Private Sub CommandButton1_Click()
Dim tmojo As Worksheet
Dim mojocell As Range
Set tmojo = Sheets("table mojo")
colls = tmojo.Range("N1").End(xlToLeft).Column
i = 1
For Each cCont In Me.Controls
If TypeName(cCont) = "ComboBox" Then
If cCont.Enabled = True Then
If cCont.Value = Empty Then
MsgBox "you havent specified all the columns"
Exit Sub
End If
ReDim Preserve collname(i)
collname(i) = cCont.Value
i = i + 1
End If
End If
Next cCont
Call createregion
End Sub
我用来自多个组合框(列名)的值填充数组 collname。然后我想调用位于模块中的 createregion 子,我想访问 collname() 中的值。
我收到错误消息:
Constants, fixed-length strings, arrays, user-defined types, and Declare statements not allowed as Public members of an object module
我需要在多个 sub 中访问这个数组,有什么解决方法吗?
谢谢你的正手。
正确的方法是将您的 UserForm 代码转移到常规模块,并将您的数组声明为 public,在模块的顶部,在每个 subs 之前:
Public MyArr()
传输代码时,您需要将子程序调用到用户窗体的事件中,因此更改所有 Me
和 Me.
到用户窗体的全名。
如果你没有时间,你可以简单地在用户窗体模块的顶部声明:
Dim MyArr()
我正在创建一个宏,我需要访问在模块中创建并填充在 useform(button_click 操作)中的数组。
Private Sub CommandButton1_Click()
Dim tmojo As Worksheet
Dim mojocell As Range
Set tmojo = Sheets("table mojo")
colls = tmojo.Range("N1").End(xlToLeft).Column
i = 1
For Each cCont In Me.Controls
If TypeName(cCont) = "ComboBox" Then
If cCont.Enabled = True Then
If cCont.Value = Empty Then
MsgBox "you havent specified all the columns"
Exit Sub
End If
ReDim Preserve collname(i)
collname(i) = cCont.Value
i = i + 1
End If
End If
Next cCont
Call createregion
End Sub
我用来自多个组合框(列名)的值填充数组 collname。然后我想调用位于模块中的 createregion 子,我想访问 collname() 中的值。 我收到错误消息:
Constants, fixed-length strings, arrays, user-defined types, and Declare statements not allowed as Public members of an object module
我需要在多个 sub 中访问这个数组,有什么解决方法吗?
谢谢你的正手。
正确的方法是将您的 UserForm 代码转移到常规模块,并将您的数组声明为 public,在模块的顶部,在每个 subs 之前:
Public MyArr()
传输代码时,您需要将子程序调用到用户窗体的事件中,因此更改所有 Me
和 Me.
到用户窗体的全名。
如果你没有时间,你可以简单地在用户窗体模块的顶部声明:
Dim MyArr()