将对象添加到VBA中的集合-> OOP-Basics?

尼克拉斯

我是OOP的新手,所以大概有一个明显的解释为什么它不起作用。我试图将对象添加到VBA中的集合。我的课程模块是这样的:

Option Explicit

'the person class
Public FirstName As String
Public LastName As String

Property Get FullName() As String
  'return the person's full name
  FullName = FirstName & " " & LastName
End Property

我的代码是这样的:

Sub myProg()


'create a new collection!
Dim Persons As New Collection

Dim p1 As New clsPerson

'give them names in "Loop"

p1.FirstName = "Rita"
p1.LastName = "Smith"
Persons.Add p1

p1.FirstName = "Sue"
p1.LastName = "Jones"
Persons.Add p1

p1.FirstName = "Bob"
p1.LastName = "Brown"
Persons.Add p1

'"Loop" end

For Each p1 In Persons
  Debug.Print p1.FullName
Next p1

End Sub

它返回3次“鲍勃·布朗”。我希望它返回我输入的3个名字。

亚历克斯·K。

p1是参考变量,它指向clsPerson使用时创建的单个特定实例New

当您将引用变量添加到集合时,您将添加引用本身,而不是副本,这意味着p1集合中的始终将指向同一clsPerson实例,实例将包含您为其分配的最后一个值。

您需要用于New创建该类的新的独立实例,并将其添加到集合中,例如

Set p1 = New clsPerson
p1.FirstName = "Bob"
p1.LastName = "Brown"
Persons.Add p1

Set p1 = New clsPerson
p1.FirstName = "Sue"
p1.LastName = "Jones"
Persons.Add p1

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

OOP解析并将对象添加到列表

来自分类Dev

C ++:将对象添加到集合中

来自分类Dev

C ++:将对象添加到集合中

来自分类Dev

JavaScript OOP。尝试学习JavaScript中的OOP

来自分类Dev

解释OOP中的封装

来自分类Dev

在Lua中理解OOP

来自分类Dev

与Python中的OOP混淆

来自分类Dev

OOP中的静态方法

来自分类Dev

解释OOP中的封装

来自分类Dev

在Lua中理解OOP

来自分类Dev

卡在oop代码中

来自分类Dev

在oop中合并功能

来自分类Dev

在OOP中操作Java对象

来自分类Dev

OOP Javascript:是否应将私有函数添加到类原型中?

来自分类Dev

检索添加到MATLAB OOP中的类的动态属性的列表

来自分类Dev

检索添加到MATLAB OOP中的类的动态属性的列表

来自分类Dev

使用传播语法将对象添加到集合元素

来自分类Dev

Javascript OOP类对象继承

来自分类Dev

OOP(面向对象编程)

来自分类Dev

Python OOP 对象实例化

来自分类Dev

CQRS / DDD如何使用命令将对象添加到集合中?

来自分类Dev

我可以结合使用LINQ和用于将对象添加到集合中的foreach吗?

来自分类Dev

如何在Java中将对象添加到集合中?

来自分类Dev

如何在指定索引处将对象添加到jQuery集合中?

来自分类Dev

将对象添加到扩展数组的JS集合中(继承?)

来自分类Dev

Angular服务中的oop类

来自分类Dev

面试中的OOP设计问题

来自分类Dev

如何避免OOP中的“耦合”

来自分类Dev

C ++中的OOP类设计