gpt4 book ai didi

Excel VBA - 类模块逻辑

转载 作者:行者123 更新时间:2023-12-04 20:33:26 25 4
gpt4 key购买 nike

我只是在学习 Excel VBA,我认为这里缺少一些概念。

假设我有一个包含 5 个汽车品牌的表格。我想将它们读入我自己的汽车品牌类(class)模块,然后打印它们的名字。

我有两种方法可以做到这一点,只有一种有效。我想知道是否有人可以解释为什么?

工作版本:

dim colCarBrands as new collection

For i = 1 To 5

Dim newCarBrand As clsCarBrand
Set clsCarBrand = New clsCarBrand

newCarBrand.BrandName chaletsSheet.Cells(i, 1)

colCarBrands.Add newCarBrand , newChalet.nameTechnical


Next

Dim b As clsCarBrand
For Each b In colCarBrands
' Print items
Debug.Print b.BrandName
Next

不工作版本:
dim colCarBrands as new collection

For i = 1 To 5

Dim newCarBrand As New clsCarBrand

newCarBrand.BrandName chaletsSheet.Cells(i, 1)

colCarBrands.Add newCarBrand , newChalet.nameTechnical


Next

Dim b As clsCarBrand
For Each b In colCarBrands
' Print items
Debug.Print b.BrandName
Next

在这个版本中,集合中的所有汽车品牌都是同一个(它是表中的最后一个)

任何想法为什么?

谢谢!

最佳答案

在第二个版本中,Dim newCarBrand As New clsCarBrand创建该类的单个实例。随后通过该循环只需更改其BrandName属性,然后将对该同一对象的另一个引用添加到集合中。如果您移动 Dim,这会更清楚。循环之前的语句。 Dim语句不是重复运行的可执行语句。

在第一种情况下,Set语句创建对象的新实例,每个实例依次添加到集合中。

关于Excel VBA - 类模块逻辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46277470/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com