Добрый день! Я ниже привёл отрывок кода своего макроса, который будет обращаться к нескольким файлам (книгам эксель) У меня возникла проблемка на этапе определения переменных Nm1-Nm6:
[vba]
Код
Dim i, i1, i2, Ni, Nj, t As Long Dim j As Long, n As Long Dim sheet As Worksheet Dim Nazvanie As String Dim Nm1, Nm2, Nm3, Nm4, Nm5, Nm6, Nm7, Nm8 As String Dim NewWB As Workbook Dim Nmn As Variant pathNWB = ThisWorkbook.Path & "\"
[/vba] Как можно подсказать ВБА что Nmn это не текст, образованный от соединения выражения "Nm" и текущего значения переменной "n", а именно имя переменной, которое образуется таким способом. Чтобы для примера MsgBox (Nmn) выдавал текущий путь к файлу (а не Nm1-Nm6).
Добрый день! Я ниже привёл отрывок кода своего макроса, который будет обращаться к нескольким файлам (книгам эксель) У меня возникла проблемка на этапе определения переменных Nm1-Nm6:
[vba]
Код
Dim i, i1, i2, Ni, Nj, t As Long Dim j As Long, n As Long Dim sheet As Worksheet Dim Nazvanie As String Dim Nm1, Nm2, Nm3, Nm4, Nm5, Nm6, Nm7, Nm8 As String Dim NewWB As Workbook Dim Nmn As Variant pathNWB = ThisWorkbook.Path & "\"
[/vba] Как можно подсказать ВБА что Nmn это не текст, образованный от соединения выражения "Nm" и текущего значения переменной "n", а именно имя переменной, которое образуется таким способом. Чтобы для примера MsgBox (Nmn) выдавал текущий путь к файлу (а не Nm1-Nm6).Roman777
Gustav, Спасибо большое. Но, видимо, я что-то не так дальше делаю, ибо проблема та же, он мне выдаёт MsgBox (Nmn) последовательно имена: Nm1-Nm6. А я хочу получить значения переменных под данными именами. (т.е. путь к каждому файлику - pathNWB & "ABB" & "\" & "ABB.xlsx" и т.д.).
Gustav, Спасибо большое. Но, видимо, я что-то не так дальше делаю, ибо проблема та же, он мне выдаёт MsgBox (Nmn) последовательно имена: Nm1-Nm6. А я хочу получить значения переменных под данными именами. (т.е. путь к каждому файлику - pathNWB & "ABB" & "\" & "ABB.xlsx" и т.д.).Roman777
Gustav, вы правы, спасибо). Hugo, Нет не elzka. Ваш способ наиболее грамотный, но в силу моей безграмотности, менее прозрачный. Тоже над запомнить. Спасибо
Gustav, вы правы, спасибо). Hugo, Нет не elzka. Ваш способ наиболее грамотный, но в силу моей безграмотности, менее прозрачный. Тоже над запомнить. СпасибоRoman777
Думаю наиболее грамотно вместо кучи однотипных (по смыслу) переменных (хоть в массиве, хоть россыпью) использовать одну переменную-массив данных - как у Gustav'a
Думаю наиболее грамотно вместо кучи однотипных (по смыслу) переменных (хоть в массиве, хоть россыпью) использовать одну переменную-массив данных - как у Gustav'aHugo
Думаю оно только для информации, и можно оттуда скопировать некоторое содержимое. Но посмотреть что где в массивах - очень помогает. С словарями правда только ключи видны, и кажется только первые 255...
Думаю оно только для информации, и можно оттуда скопировать некоторое содержимое. Но посмотреть что где в массивах - очень помогает. С словарями правда только ключи видны, и кажется только первые 255...Hugo
Gustav, Hugo, я думаю не помешает на будущее пояснить человеку, что в строке [vba]
Код
Dim Nm1, Nm2, Nm3, Nm4, Nm5, Nm6, Nm7, Nm8 As String
[/vba] тип переменной "As String" присваивается только переменной Nm8, остальным же, автоматически присваивается "As Variant". Поэтому необходимо тип указывать для каждой переменной. Ну а, тип "As String" я заменяю значком $, так быстрее. [vba]
Код
Dim Nm1$, Nm2$, Nm3$, Nm4$, Nm5$, Nm6$, Nm7$, Nm8$
[/vba]Хотя, может это и не правильно.
Gustav, Hugo, я думаю не помешает на будущее пояснить человеку, что в строке [vba]
Код
Dim Nm1, Nm2, Nm3, Nm4, Nm5, Nm6, Nm7, Nm8 As String
[/vba] тип переменной "As String" присваивается только переменной Nm8, остальным же, автоматически присваивается "As Variant". Поэтому необходимо тип указывать для каждой переменной. Ну а, тип "As String" я заменяю значком $, так быстрее. [vba]
Код
Dim Nm1$, Nm2$, Nm3$, Nm4$, Nm5$, Nm6$, Nm7$, Nm8$