У меня всегда были проблемы с объявлением динамических массивов с использованием синтаксиса Dim myArray()
.Я всегда объявляю свои массивы как обычные варианты, что позволяет мне позже использовать оператор ReDim
.
(В качестве примечания, если мне понадобится пустой массив, я буду использовать Array
функция без аргументов, т.е. myArray = Array()
. Преимущество заключается в том, что вызов функции UBound
вернет -1 вместо того, чтобы выдавать ошибку, поэтому я легко могу определить, является ли массив пустым.)
Dim MyAvailArray
If InStr( MyAvailRooms, "," ) > 1 Then
'<snip>'
MyAvailArray = tempArray
Else
MyAvailArray = Array(MyAvailRooms)
End If
Обратите внимание, что для краткости я использовал функцию Array
.
Кстати, проверка InStr
не нужна, поскольку Split
всегда будет возвращать массив, даже если разделитель не установлен.не в строке.Поэтому вы можете переписать код следующим образом:
Dim MyAvailArray
MyAvailArray = Split(MyAvailRooms, ",")