Используйте переменную для именования объекта класса (Excel VBA)

Я пишу сценарий для записи различных характеристик, связанных с набором материалов (номер поставщика, сертификаты материала и т. Д.). Хороший способ сделать это, я хотел бы создать объект класса, названный серийным номером пакета, со всеми этими параметрами.

Серийный номер представляет собой строку, размещенную в массиве. Я пытаюсь выяснить, существует ли какой-либо тип данных, которому можно присвоить значение серийного номера и использовать для именования объекта класса:

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

Я понимаю, почему это не может сработать (я просто переименовываю «Obj»), но может ли кто-нибудь дать совет, возможно ли то, что я пытаюсь сделать?

Всего 1 ответ


Имена переменных в VBA являются статическими (означает, что они не могут быть изменены динамически). Возможно, вы захотите взглянуть на Dictionaries см. Excel VBA Dictionary - Полное руководство .

Затем вы можете добавить новый элемент в словарь и назначить этому элементу новый экземпляр вашего класса.

Пример:

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.

Есть идеи?

10000