Используйте переменную для именования объекта класса (Excel VBA) - PullRequest
0 голосов
/ 10 февраля 2020

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

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

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

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

1 Ответ

3 голосов
/ 10 февраля 2020

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

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

Пример:

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.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...