自定义类(类模块)的强制类型转换

suihu 2020-01-23 10:30:03
通过类模块定义了一个类“PersonClass”

通过 Collection类型 将多个 PersonClass 放到了 集合中

但再从 Collection 类型中获取 PersonClass实例时如何实现强制类型转换?


代码片断:
1、PersonClass类对象

Option Explicit

Public code As Integer '序号
Public name As String '姓名
Public cardId As String '身份证号
Public huCode As String '户号
Public isHuzhu As String '是否户主


2、personClass实例赋值

Dim I As Integer
Dim rowIndex As Integer
Dim colIndex As Integer
Dim rowCount As Integer
Dim sequence As Integer
Dim getPerson As PersonClass

Dim hujiDatas As New Collection

For I = rowIndex To 3
Dim person As New PersonClass
person.code = sequence
person.name = Range("B" + CStr(rowIndex)).Value
person.cardId = Range("C" + CStr(rowIndex)).Value
person.huCode = Range("D" + CStr(rowIndex)).Value '
person.isHuzhu = Range("E" + CStr(rowIndex)).Value

sequence = sequence + 1
rowIndex = rowIndex + 1

hujiDatas.Add Item:=person, Key:=person.cardId

Next


3、获取集合中personClass实例

For I = 1 To hujiDatas.Count

Set getPerson = New PersonClass
getPerson = hujiDatas.Item(I)
MsgBox p.name

Next



第3部分:getPerson = hujiDatas.Item(I) 出错

出错提示:对象不支持该属性或方法

求解


...全文
438 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
bcrun 2020-02-01
  • 打赏
  • 举报
回复
没有。曾经一度想学熟编译原理后,写一些别的环境下的BASIC解析器什么的,不过后来发现实在不擅长啊。目前在看webassembly这个环境下的东东。
舉杯邀明月 2020-01-31
  • 打赏
  • 举报
回复
引用 3 楼 bcrun 的回复:
好久没来,没想到我还是版主,结个帖试试!

恭喜保住“乌纱帽” 

这论坛很久前就拿给一群实习生练手了,都快凉凉了,
版主早就没进行考核了吧。
bcrun 2020-01-30
  • 打赏
  • 举报
回复
好久没来,没想到我还是版主,结个帖试试!
舉杯邀明月 2020-01-24
  • 打赏
  • 举报
回复
应该是这样写吧:
set getPerson = hujiDatas.Item(I)
X-i-n 2020-01-24
  • 打赏
  • 举报
回复
1. 类模块的代码没发全? 2. 循环的时候,rowIndex没有赋值,这时候它的初值是0,但是excel的rowindex是从1开始的,第一个循环它可能就会有异常。 3. 在赋完值以后,中断,到监视里查看一下hujiDatas集合是否有成员; 4. getPerson = hujiDatas.Item(I)这行中断,直接在监视里查看 hujiDatas集合是否有成员,再查看hujiDatas.Item(I)是否有值。 其它地方没看出问题。

2,462

社区成员

发帖
与我相关
我的任务
社区描述
VBA(Visual Basic for Applications)是Visual Basic的一种宏语言,是在其桌面应用程序中执行通用的自动化(OLE)任务的编程语言。
社区管理员
  • VBA
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧