#arrays #vba #loops #variables #declaration
Вопрос:
Я пытаюсь затемнить вектор внутри цикла. Я хотел бы затемнять переменную с другим именем на каждой итерации, например:
Dim a as String
For i = 1 to 10
a = "vector_" amp; i
Dim a() as Double
Next i
Итак, в этом конкретном случае мне нужно 10 двойных переменных: vector_1, vector_2, vector_3… Конечно, этот код неверен.
Есть простой способ сделать это?
Спасибо.
Комментарии:
1. Эта попытка не сработает. Однако, почему бы вам не объявить вектор как массив?
Dim vector(1 To 10) As Double
2. Могу я спросить, с какой целью нужно создавать такие переменные?
3. Просто назидательное любопытство, но так как VBA всегда читает объявления переменных в начале, я вижу, что это невозможно, ха-ха-ха-ха
Ответ №1:
Вы не можете объявлять имена переменных в цикле. Переменные должны быть скомпилированы перед их запуском, и компилятор VBA не работает с циклами.
В любом случае, вы можете подумать о создании словаря и записи ключей в цикле:
Sub TestMe()
Dim a As String
Dim i As Long
Dim foo As Object
Set foo = CreateObject("Scripting.Dictionary")
For i = 1 To 10
a = "vector_" amp; i
foo.Add a, i * i
Next i
Debug.Print foo("vector_5") 'prints 25
End Sub