Excel 请问如何修改解决下标越界的问题
展开全部
下标越界这个是VBA里面的问题,主要指你输入的命令值已经超过了它的边界值即最值(最大最小)这个要根据具体情况具体解决:
举个例子:VBA中个二维数组,arr(1
to
10,1
to
10),代表他可以储存arr(x,y)
(注:
x取值
1到10,y取值1到10.)100个数据(或者对象);如果你让x,y取了其他值,那么系统就报错,下标越界
处理这类越界的问题有两种方法:
1、粗处理:定义一个比较大的数组,保证控件足够。弊端:占内存;
2、细处理:根据实际情况定义数组大小,用redim
及时调整数组的大小;
以上例子是针对数组的举例;其他如excel只包含三个sheet,你代码出现sheets(4)也会报错,告诉你下标越界。
举个例子:VBA中个二维数组,arr(1
to
10,1
to
10),代表他可以储存arr(x,y)
(注:
x取值
1到10,y取值1到10.)100个数据(或者对象);如果你让x,y取了其他值,那么系统就报错,下标越界
处理这类越界的问题有两种方法:
1、粗处理:定义一个比较大的数组,保证控件足够。弊端:占内存;
2、细处理:根据实际情况定义数组大小,用redim
及时调整数组的大小;
以上例子是针对数组的举例;其他如excel只包含三个sheet,你代码出现sheets(4)也会报错,告诉你下标越界。
展开全部
for x = 2 to i '循环 从2到i
bm(x) = sheets(x).name '把表的名字给 表名()
next你这里是从2开始循环的,bm(1)并没有值。
for z = 1 to i
if cells(y, 3) = bm(z) then
if sheets(bm(z)).cells(34, 8) = "借" then '(就是这个地方说是下标越界)你这里的z是从1开始的,所以会出错
bm(x) = sheets(x).name '把表的名字给 表名()
next你这里是从2开始循环的,bm(1)并没有值。
for z = 1 to i
if cells(y, 3) = bm(z) then
if sheets(bm(z)).cells(34, 8) = "借" then '(就是这个地方说是下标越界)你这里的z是从1开始的,所以会出错
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询