Первое, что нужно отметить, вы на самом деле не заполняете первый элемент массива или widthArray(0)
.То есть, если вы не указали Option Base 1
.
Во-вторых, если вы проверите значение c
после завершения цикла, вы увидите, что оно на самом деле 31
.Это связано с тем, что из документации For...Next
:
После выполнения всех операторов в цикле step добавляется к counter .На этом этапе либо операторы в цикле выполняются снова (на основе того же теста, который вызвал выполнение цикла изначально), либо цикл завершается, и выполнение продолжается с оператором, следующим за оператором Next
.
В этом случае c
увеличивается до 31, но цикл завершается.Таким образом, вы получите
Ошибка индекса вне диапазона.
Не уверен, что именно вы хотите сделать, но вы можете использовать Ubound
возможно:
MsgBox widthArray(Ubound(widthArray)) ' no outer parentheses