Excel vba пошаговый массив с кнопками вперед и назад - PullRequest
0 голосов
/ 13 февраля 2019

У меня есть массив (красный, синий, коричневый, черный), пытающийся добавить 6 кнопок «вправо +3» и «влево +3» для пользовательской формы, которые отображают элементы массива с 4 по 1 позиции. Пример, если элемент 3 равенотображается «коричневый», затем я нажимаю «влево + 3», в текстовом поле теперь будет отображаться элемент 4 «черный» перемещается на 3 позиции влево 3,2,1,4.Теперь, если я нажму на «вправо + 3», теперь будет отображаться «коричневый», так что он сдвинется на 3 позиции вправо, что будет 4, 1, 2, 3. Я могу вычесть или добавить из позиции массива, но если я в позиции4, и я добавляю 3, я получаю ошибку, потому что нет элемента 7:

MsgBox RARRY(4) + 3

enter image description here enter image description here

1 Ответ

0 голосов
/ 13 февраля 2019

Вы на самом деле не используете массив, который является основой 1, не так ли?Это было бы первой ошибкой.

Если у вас есть 4 значения, то

Count = 4
Redim Colours(Count-1)

Массив должен начинаться с 0, поэтому допустимые индексы должны быть 0,1,2,3.

В любом случае,то, что вы ищете, это функция Mod.Это в основном дает вам остаток после операции деления.Это очень удобно для перемещения индексов массива по своему усмотрению.

Index = (Index + Offset + Count) Mod Count

Использование функции Mod гарантирует значение от -Count+1 до Count-1

Где Offset - любое значение от -Count до Count.

+ Count гарантирует, что вы на самом деле не получите отрицательных значений.

Если вы настаиваете на использовании массива, которыйначинается с основания 1, затем формула превращается в

Index = ((Index - 1 + Offset + Count) Mod Count) + 1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...