乔山办公网我们一直在努力
您的位置:乔山办公网 > excel表格制作 > excel vba 下标越界问题,如何解决?

excel vba 下标越界问题,如何解决?

作者:乔山办公网日期:

返回目录:excel表格制作


原因:说明对象不存在或者数组元素不存在。

1、举个简单的例子:工作表中没有"1月"这个工作表,却用Sheets("1月");数组定义的是arr(1 to 10),却用Arr(11),都会出现下标越界的提示。

2、然后改正后的代码如下:

Sub a()

Dim arr() '定义一个动态数组

Dim i As Integer

ReDim arr(1 To 3) '定义一个3个元素的数组,并且对数组进行初始化

arr(1) = 3

arr(2) = 4

arr(3) = 5

'在下面语句重新定义一个10个元素的数组,清除前面的元素,并重新分配新的存储变量

ReDim arr(1 To 10)

For i = 1 To 10

arr(i) = i

Next i

End Sub

3、然后点击运行就不会提示了。



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开始的,所以会出错


1、在SHEET表内设置好按钮,并指定到宏。

2、在VBA编辑器内输入如下的代码。(此代码的含义为遍布区域内的单元格,如果为空格,则隐藏空格所在的整列。

3、在运行过程中出现了问题,下标越界,无法运行。

4、在代码中的“SHEET1”工作表根本没有,因为SHEET表的标签名称为“图表”,因此代码运行时找不到"SHEET1"工作表,所以提示下标越界。

5、点击异常提示下的“调试”按钮,将代码中“SHEET1”改为“图表”后再点按钮,运行宏,代码正常运行,无下表越界提示。

注意事项:

Excel虽然提供了大量的用户界面特性,但它仍然保留了第一款电子制表软件VisiCalc的特性:行、列组成单元格,数据、与数据相关的公式或者对其他单元格的绝对引用保存在单元格中。



下标越界这个是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)也会报错,告诉你下标越界。

相关阅读

  • excel vba 下标越界问题,如何解决?

  • 乔山办公网excel表格制作
  • 原因:说明对象不存在或者百数组元素不存在。1、举个简单的例子:工作表中没有"1月"这个工作表,却度用Sheets("1月");数组定义的是arr(1 to 10),却用Arr(11),都会出现下标越界的提示。
关键词不能为空
极力推荐

ppt怎么做_excel表格制作_office365_word文档_365办公网