Вызвать сгенерированное имя переменной в vbScript - PullRequest
0 голосов
/ 05 июля 2018

Я создаю макрос для использования в личных коммуникациях 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» (как и другие проблемы с этим оператором, но они не добавляются и не удаляются). из моего запроса).

Я нашел следующий вопрос, который, как мне показалось, направляет меня в правильном направлении, но я не смог заставить его работать.

Определение новой переменной путем объединения двух других имен переменных в VBS

1 Ответ

0 голосов
/ 05 июля 2018

НЕ создавать имена переменных на лету. 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
...