【发布时间】:2017-09-05 07:58:00
【问题描述】:
我正在为一点点 VBa 和 Excel 苦苦挣扎。我需要在 VBa 中创建一个结构,即Type。我遇到的问题是,当我尝试执行代码时收到错误消息!我觉得我需要解释一下我是如何到达这里的,以防我犯了错误。
我已经读过要创建一个类型,它需要被公开。因此,我创建了一个新类(在类模块下)。在Class1,我写了
Public Type SpiderKeyPair
IsComplete As Boolean
Key As String
End Type
在ThisWorkbook 内我有以下内容
Public Sub Test()
Dim skp As SpiderKeyPair
skp.IsComplete = True
skp.Key = "abc"
End Sub
没有其他代码。我遇到的问题是我收到错误消息
无法在对象模块中定义公共的用户定义类型
如果我将类型设为私有,则不会出现该错误,但我当然无法访问该类型的任何属性(使用 .NET 术语)。
如果我将代码从 Class1 移到 Module1 中,它可以工作,但是,我需要将它存储到一个集合中,这就是它出错的地方,也是我卡住的地方。
我已将我的Test 更新为
Private m_spiderKeys As Collection
Public Sub Test()
Dim sKey As SpiderKeyPair
sKey.IsComplete = False
sKey.Key = "abc"
m_spiderKeys.Add (sKey) 'FAILS HERE
End Sub
只有在公共对象模块中定义的用户定义类型才能被强制转换为变体或从变体强制转换或传递给后期绑定函数
我对此进行了调查,但我不明白我需要做什么...如何将 SpiderKeyPair 添加到我的收藏中?
【问题讨论】:
标签: vba