从用户窗体 vba 加载的公共数组
Posted
技术标签:
【中文标题】从用户窗体 vba 加载的公共数组【英文标题】:public array loaded from useform vba 【发布时间】:2015-08-11 01:51:46 【问题描述】:我正在创建一个宏,我需要访问在模块中创建并填写在 useform (button_click action) 中的数组。
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 sub 并且我想访问 collname() 中的值。 我收到错误消息:
Constants, fixed-length strings, arrays, user-defined types, and Declare statements not allowed as Public members of an object module
我需要在多个 subs 中访问这个数组,有什么解决方法吗?
谢谢你。
【问题讨论】:
【参考方案1】:正确的方法是将您的 UserForm 代码转移到常规模块中,并将您的数组声明为 public,在模块顶部,在每个 subs 之前:
Public MyArr()
当您传输代码时,您需要将 subs 调用到您的用户窗体的事件中,因此 将所有 Me
和 Me.
更改为您的用户窗体的全名。
如果你没有时间,你可以简单地在 UserForm 模块的顶部声明:
Dim MyArr()
【讨论】:
以上是关于从用户窗体 vba 加载的公共数组的主要内容,如果未能解决你的问题,请参考以下文章