Страницы: 1
RSS
VBA. Разделение строки кода с созданием массива на две строки. Ошибка
 
Здравствуйте.
Заполняю массив таким способом:
Код
Dim aR() as Variant
a=[{1, 2, 3, 4, 5; 11, 22, 33, 44, 55; 111, 222, 333, 444, 555}]

Значений много и строка получается очень длинной.
Попытался сделать перенос строки используя символ переноса строки - пробел и нижнее подчёркивание.
Код
Dim aR() as Variant
a=[{1, 2, 3, 4, 5; 11, 22, 33, 44, 55; _
111, 222, 333, 444, 555 }]

Но при этом возникает ошибка про конец строки.
Как правильно сделать перенос строки?
Спасибо
Microsoft Office 2010 64-bit, Windows 10 Professional 64-bit
 
Ваши ошибки: [{;
UPD:
Да, есть такой способ заполнения двумерного массива вручную, для меня это новинка.
Изменено: DANIKOLA - 29.01.2022 10:59:17
 
DANIKOLA, да, но в моём примере кода - массив двухмерный, а в вашем - одномерный
Microsoft Office 2010 64-bit, Windows 10 Professional 64-bit
 
Код
Dim aR() As Variant
a = Evaluate("={1, 2, 3, 4, 5; 11, 22, 33, 44, 55;" & _
"111, 222, 333, 444, 555 }")
По вопросам из тем форума, личку не читаю.
 
Artem1977,  не похож Ваш массив на двумерный. лучше посмотрите выше отличную статью про массивы в vba, а то Вы походу путаете синтаксис из другого языка программирования.
 
DANIKOLA, см. мой пост выше. Массив двумерный. Собственно [] что фактически Evaluate , имеет синтаксическое ограничение и разрыв недопустим как и для любого оператора, который нельзя рвать.
Rando _
   mize
Изменено: БМВ - 29.01.2022 09:10:10
По вопросам из тем форума, личку не читаю.
 
БМВ,  спасибо. То что надо. Только не могу понять почему возникает ошибка 13 Type mismatch при вводе 12-ой тройки цифр:

Код
    Dim aR() As Variant
    
    aR = Evaluate("={0,-2,0.14632971213167;0,-1,-0.84548187169114;0,0,3.756360367204;" & _
                    "0,1,3.3855169168385;0,2,-0.95791963387872;0,3,0.15772038513228;" & _
                    "0,4,-0.016616417199501;0,5,8.1214629983568E-04;1,-9,2.8319080123804E-04;" & _
                    "1,-7,-6.0706301565874E-04;1,-1,-0.018990068218419;1,0,-0.032529748770505 }")

При вводе 11-ой тройки цифр всё нормально.
Наверное сильно длинная строка получается?
И что делать? У меня должно быть 34 троек цифр
Изменено: Artem1977 - 29.01.2022 09:56:54
Microsoft Office 2010 64-bit, Windows 10 Professional 64-bit
 
Цитата
Artem1977 написал:
Наверное сильно длинная строка получается?
Да. У Evaluate есть ограничение на длину строки выражения - не более 255 символов.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Artem1977,  при таком массиве проще записать строку и поделить потом в процедуре c заполнением массива, это конечно не одна строка, но зато нет ограничений.
По вопросам из тем форума, личку не читаю.
 
БМВ, еще раз спасибо за помощь и подсказку в каком направлении идти! Всё получилось
Microsoft Office 2010 64-bit, Windows 10 Professional 64-bit
 
Так если массив прописываете в коде - можно ведь в коде заполнить массив обычным способом, а не этими извращениями.
Объявили нужного вида/размера, и каждый элемент прописали.
 
Hugo, и согласен и нет. Хотя я б наверно предпочел использование одномерного массива массивов, как делал там или просто одномерный и крохотную функцию возврата значения по двумерному индексу с учетом смещения.
Изменено: БМВ - 29.01.2022 19:48:41
По вопросам из тем форума, личку не читаю.
Страницы: 1
Наверх