Объявление переменных в VBA при Step -1

компьютеры VBA Программирование

Почему при отрицательном шаге нельзя объявлять переменные шага типом Byte?
Пример неработающей программы
Sub x()
Dim i as byte, a() as integer
n=4
redim a(n)
For i = 4 to 1 step -1
a(i)= 1
next
end sub
Ответы:
По-моему, эта программа и при "Step 1" не работала бы — индекс массива должен быть числовым типом, а не байтом, если не ошибаюсь.
Ошибка заключается в том что переменная цикла i объявленна с типом Byte. Тип Byte может принимать значение только в диапазоне от 0 до 255. В каждой итерации в цикле, VBA выполняет сложение начального значения переменной цикла с заданным шагом а шаг -1 выходит за пределы диапазона Byte. Поэтому возникает ошибка Overflow. Для решения проблемы можно изменить тип переменной i с Byte на Integer или изменить порядок заполнения массива a(i) For i = 1 to 4


15 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.