在vbScript中调用生成的变量名称

时间:2018-07-05 09:53:09

标签: variables vbscript ibm-midrange

我正在创建要在Personal Communications 5.8 https://www.ibm.com/support/knowledgecenter/en/SSEQ5Y_5.9.0/com.ibm.pcomm.doc/readme/readV58.html

中使用的宏

宏将在各种“区域”上运行,这些区域在屏幕上具有4个字符的文本标识符。例如TRND或TRNI。我有七个地区。

在整个宏中,某些步骤将根据该区域使用稍有不同的值。所以我的数组可能看起来像这样;

screenTRND = Array ("One", "Two", "Three")
screenTRNI = Array ("Apples", "Bananas", "Oranges")

没有人在整个宏中构建七个不同的“ If”语句,没有人知道一种调用单个“ If”语句的方法,该方法将根据所标识的区域进行调整吗?

例如,只有一个'If'语句,类似;

If screen & region (0) = "One" Then MsgBox "Success"

因此,如果该区域为TRND,那么一切都很好。但是,如果区域是TRNI,则测试将得出错误的结果。

当然,在上面的方法中,数组值只在'TRND'中查找数组值,而不是在'screenTRND'中(以及该语句的其他问题,但这些问题不会添加或删除)从我的查询中。)

我找到了以下问题,我觉得这是正确的方向,但我无法使其正常工作。

Define a new variable by concatenation of two other variable names in VBS

1 个答案:

答案 0 :(得分:3)

请勿即时构造变量名称。 VBScript不能真正解决这个问题,即使可以,仍然还是不好的做法。

使用适当的数据结构来处理数据,在这种情况下为字典:

Set screen = CreateObject("Scripting.Dictionary")
screen.Add "TRND", Array("One", "Two", "Three")
screen.Add "TRNI", Array("Apples", "Bananas", "Oranges")

然后您可以执行以下操作:

If screen(region)(0) = "One" Then MsgBox "Success"

或者您可以检查是否首先定义了区域:

If screen.Exist(region) Then
    WScript.Echo "Region " & region & " exists."
Else
    WScript.Echo "Region " & region & " does not exist."
End If