Как я могу создать динамические имена переменных без использования словаря? - PullRequest
0 голосов
/ 30 декабря 2018

Я связываю Excel с Aspen Hysys, что позволяет мне импортировать данные из второго.Hysys имеет большую иерархию трех объектов, включая объект Stream.Объект Stream содержит переменные, такие как Temperature, VaporFraction и т. Д., И я получаю к ним доступ через синтаксис объекта:

Dim hyApp As HYSYS.Application
Dim hyCase As HYSYS.SimulationCase
Dim hyStream As HYSYS.Streams
Dim temperature As Double

Set hyApp = CreateObject("HYSYS.Application")
Set hyCase = hyApp.ActiveDocument
Set hyStream = hyCase.Flowsheet.MaterialStreams.Item(0)
temperature = hyStream.TemperatureValue

Теперь, если мне нужно, VaporFraction, мне нужно сделать следующее:

Dim vaporFraction As Double
vaporFraction = hyStream.VaporFractionValue

Но что, если мне понадобятся другие свойства?Или нужно 100 свойств?

Есть ли способ конвертировать строки (хранящиеся в ячейках) в имена переменных.Я понимаю концепцию использования словарей.Но в этом случае это не сработает.

То, что я ожидал, выглядит примерно так:

properties = ("Temperature", "VaporFraction")
For Each property in properties
    createVaribleName(property + "Value")
Next property

1 Ответ

0 голосов
/ 30 декабря 2018

Да, для классов вы можете использовать функцию CallByName.Смотрите здесь: CallByName

Возвращение свойства класса, пример:

Dim MyCollection As Collection: Set MyCollection = New Collection
MyCollection.Add "A"
MyCollection.Add "B"
Debug.Print CallByName(MyCollection, "Count", VbMethod)

Если вы работаете с кодом, который вы написали в стандартном модуле, взгляните на Application.Run.

...