Я обнаружил, что этот поток ищет решение проблемы, при которой циклическое выполнение многомерного массива завершится ошибкой, если размерный элемент будет пустым.Я создал массив, просматривая источник, который может иметь до 6 наборов данных.Затем после обработки я повторил бы это еще 19 раз.
Dim varDeskData As Variant
Dim varDesk As Variant
ReDim varDesk(1 To 6)
For y = 1 To 6
ReDim varDeskData(1 To 4)
varDeskData(1) = "nifty integer from source(y)"
varDeskData(2) = "nifty string from source(y)"
varDeskData(3) = "another nifty string from source(y)"
varDeskData(4) = "another nifty string from source(y)"
varDesk(y) = varDeskData
Next y
Когда я запустил следующее, я обработал первые три, но затем не получился бы на четвертом, потому что я загрузил только три вродительский массив:
For y = 1 To 6
If varDesk(y)(1) > 0 Then
... do nifty stuff ...
End If
End If
Использование процедуры IsEmpty для элементов верхнего уровня родительского массива исправило это:
For y = 1 To 6
If IsEmpty(varDesk(y)) = False Then
If varDesk(y)(1) > 0 Then
... do nifty stuff ...
End If
End If
End If