Ошибка Out of Range в Excel VBA при попытке доступа к элементу массива, который не существует - PullRequest
0 голосов
/ 17 октября 2019

У меня очень простая проблема.

Контекст: 1) У меня есть столбец, в котором каждая ячейка может содержать или не содержать список записей, разделенных запятыми. 2) Я перебираю каждую строку и разделяю каждую ячейку запятой и передаю это в массив. 3) Затем я записываю значение для каждого элемента в массив в новую ячейку в другой электронной таблице.

Когда я добавляю array (0), моя формула работает, потому что всегда есть одна запись (хотя это не всегдазапятая, разделенная дополнительными записями).

Когда я добавляю массив (1), моя формула условно работает, потому что есть некоторые случаи, когда она будет иметь значение от разбиения ячейки запятой и доступа ко второй записи.

Однако во многих случаях массив (1) не имеет значения, и я получаю индекс из-за ошибки диапазона.

Как я могу условно проверить, когда элемент массива, к которому я обращаюсь, неу меня нет значения, чтобы избежать этого?

В настоящее время у меня есть что-то вроде:

Workbook.Worksheets("name").Cells(x,y).Value = array(1)

Я хочу сделать что-то вроде:

If (IsEmpty(array(1))) Then
    Workbook.Worksheets("name").Cells(x,y).Value = ""
Else 
    Workbook.Worksheets("name").Cells(x,y).Value = array(1)

Но это также бросилоошибка индекса. Любой совет?

1 Ответ

2 голосов
/ 17 октября 2019

Чтобы проверить количество элементов в массиве, используйте UBound, например,

If UBound(array) > 0 Then
    ... access array(1)
Else
    ... write a blank string.
End If
...