如何不使用字典就创建动态变量名?

时间:2018-12-30 01:30:13

标签: excel vba aspen

我正在将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 :(得分:4)

是的,对于类,您可以使用CallByName函数。看到这里:CallByName

返回类属性,例如:

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

如果要使用在标准模块中编写的代码,请查看Application.Run