Excel VBA通​​过向前和向后按钮逐步遍历数组

时间:2019-02-13 05:16:28

标签: arrays excel vba

我有一个数组(红色,蓝色,棕色,黑色)试图向用户窗体添加6个按钮“ right +3”和“ left +3”,以显示数组元素4的位置1至4。例如,元素3是显示“棕色”,然后单击“左+3”,文本框现在将显示元素4“黑”向左移动3、2、1、4的3个位置。现在,如果我单击“ right + 3”,它将显示“ brown”,因此它将向右移动3个位置,分别是4、1、2、3。  我可以从数组位置减去或加,但是如果im在位置4上并且我加3,则会得到错误,因为没有元素7:

MsgBox RARRY(4) + 3

enter image description here enter image description here

1 个答案:

答案 0 :(得分:0)

您实际上并未实际使用以1为底的数组吗?那将是第一个错误。

如果您有4个值,则

Count = 4
Redim Colours(Count-1)

数组应从0开始,因此有效索引应为0、1、2、3。

无论如何,您正在寻找的是Mod函数。基本上,它会给您除法运算后的余数。以所需的方式移动数组索引非常有用。

Index = (Index + Offset + Count) Mod Count

使用Mod函数将保证介于-Count+1Count-1之间的值

Offset是从-CountCount的任何值。

+ Count确保您实际上没有得到任何负值。

如果您坚持使用以1为底的数组,则公式变为

Index = ((Index - 1 + Offset + Count) Mod Count) + 1