永发信息网

vba数组的使用

答案:2  悬赏:10  手机版
解决时间 2021-03-20 12:26
  • 提问者网友:心牵心
  • 2021-03-19 13:41
原题,编写按钮的Click过程,要求:点击按钮“统计”(command2)随机产生10个数据,范围在0-100之间的整数,通过列表框(list0)显示出来,并在文本框(text3)中显示大于50的数据个数。对控件属性做简单说明。
Option Compare Database
Option Base 1

Private Sub Command0_Click()
Dim a(10) As Integer, i As Integer, x As Integer
For i = i To 10
a(i) = Int(Rnd * 100)
List3.AddItem a(i)
Next
For i = 1 To 10
If a(i) > 50 Then x = x + 1
Next
Text1.Value = x

End Sub
错误提示 下标越界, 这是为啥? 求大神解答
最佳答案
  • 五星知识达人网友:青尢
  • 2021-03-19 14:40
你的主要问题是
1. dim a(10)相当于定义了一个长度为10的数组. 因为你用Option Base 1声明了下标从1开始, 所以dim a(10) 相当于是 dim a(1 to 10);
2. dim i as Integer,  而i没有赋给初始值时, 默认赋值为0. 所以for i = i to 10第一个就开始从0循环, 就是a(0)了, 导致数组下标越界. 
你是笔误了吧, 将for i = i to 10修改为for i = 1 to 10
全部回答
  • 1楼网友:酒者煙囻
  • 2021-03-19 16:01

你的arr数组,本是一维数组,不需要转置。

只有arr=range("a1:a" & m).value 得来的才是二维的,但是转置以后还是二维的。

用循环,用range也是可以的

for j for j =2 to 10 step 2
sheets("0" & aaa).cells(8,i)=brr(i)
for j =2 to 10 step 2
sheets("0" & aaa).range("b8").offset(0,j-2)=arr(j/2)

我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯