首页 > 解决方案 > 使用变量命名类对象(Excel VBA)

问题描述

我正在编写一个脚本来记录与一堆材料相关的各种特征(供应商编号、材料证书等)。我认为一个很好的方法是创建一个类对象,以令的序列号命名,并带有所有这些相关参数。

序列号是一个包含在数组中的字符串。我正在努力找出是否有一些数据类型可以分配序列号值并用于命名类对象:

Dim Obj As String
Obj = Arr_IncomingCann(i, 2)
Dim Obj As New cCannister

我明白为什么这行不通(我只是在重新调整“Obj”的尺寸),但是有人可以就我尝试的方法是否可行提供一些建议吗?

标签: excelvbaoopobject

解决方案


VBA 中的变量名称是静态的(意味着它们不能动态更改)。您可能想Dictionaries看看Excel VBA Dictionary – A Complete Guide

然后,您可以将新项目添加到字典中,并将您的类的新实例分配给该项目。

例子:

Dim dict As Object
Set dict = CreateObject("Scripting.Dictionary")

Dim NewClass As New clsMyClass
NewClass.Test = "ABC" 'do something with your class object

dict.Add Key:="your serial", Item:=NewClass
Set NewClass = Nothing 'you can destroy the variable the class object is now in the dictionary.

然后你可以访问它

Debug.Print dict("your serial").Test 'will return ABC from your class object.

推荐阅读