Excel и VBA не являются моими коньками, хотя и мой уровень владения ими не ниже среднего. Но прибегаю к ним достаточно редко. Потому и наступаю на грабли. Недавно столкнулся с тем, что в VBA не смог определить размер массива строк после преобразования строки в массив строк функцией Split.
Перевести длинную строчку в массив можно функцией Split.
Dim txt As String txt = "Перевести длинную строчку в массив можно функцией Split" Dim textArray() As String textArray = Split(txt)
Согласно документации, размер массива можно определить функцией Length. Но в случае с массивом, полученным с помощью функции Split, этого сделать нельзя. На строке "textArray.Length" будет сообщение об ошибке "Compile error: Invalid qualifier".
Найти длину массива можно через поиск наименьшего и наибольшего доступных индексов для указанного измерения массива: LBound и UBound.
Dim arrayStart As Integer Dim arrayEnd As Integer arrayStart = LBound(textArray) arrayEnd = UBound(textArray) MsgBox (arrayEnd - arrayStart)
Отмечу, что функция Split возвращает массив с нулевым основанием (т.е. первый элемент имеет индекс 0), потому в этом случае можно ограничиться определением только UBound(textArray).