Хотите получить доступ к переменной по ее имени со строковым значением - PullRequest
0 голосов
/ 19 сентября 2018

Я хочу получить значение переменной, создав ее имя с двумя разными строками.

Чтобы свести его к минимуму:

TA = 1
TB = 2
TC = 3
B = 2

Messagebox.Show(B*("T"+"B"))

Я знаю, что это минимально, и я не хочу использовать его в сложном коде.Я также знаю, что есть способы сделать это, но я работаю в среде с минимальными функциями.

Так есть ли основной способ сделать это?

1 Ответ

0 голосов
/ 19 сентября 2018

Вы не можете ссылаться на переменную динамически, как это.Это противозаконно.Обычно, когда люди начинают думать таким образом, ответом является «Использовать массив».Вместо этого, учитывая ваш пример, лучше всего использовать словарь:

Пример с использованием словаря:

Dim dict As Object
Set dict = CreateObject("Scripting.Dictionary")

dict.Add "TA", 1
dict.Add "TB", 2
dict.Add "TC", 3
b=2

MessageBox.Show(B*(dict("T" & "B")))

То, что "T" & "B" объединяется вместе, чтобы иметь значение "TB", а затем извлекает value at key "TB" в вашем словаре dict, который является 2 и выполняет математику.

Dictionary хорошо для изучения, потому что он невероятно мощный.Вы можете хранить что угодно в словаре (включая другие словари), не только числовые и строковые значения.

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

Вместо этого перейдите в Инструменты >> Ссылки и установите флажок Microsoft Scripting Runtime в списке.Тогда вы можете использовать свой словарь, как если бы он был родным:

Dim dict As Dictionary
Set dict = New Dictionary

dict.Add "TA", 1
....

Что касается решения с массивом.Обычно люди спрашивают что-то вроде:

«Почему это не работает?»

Dim var1, var2, var3, var4
var1="hi "
var2="there "
var3="what's "
var4="up."

For i=1 to 4
    output=output & (var & i)
Next

MsgBox(output)

Что очень похоже на вопрос здесь.Вместо «Динамическая переменная» мы можем использовать массив:

Dim arrayVar(1 to 4) As String
arrayVar(1)="hi "
arrayVar(2)="there "
arrayVar(3)="what's "
arrayVar(4)="up."

For i=1 to 4
    output=output & arrayVar(i)
Next

MsgBox(output)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...