VBA运行时错误9,下标越界

请大家帮忙看看,为什么这个是错的啊?谢谢!是worksheets("yours")这里出了问题,因为打完再输入range就没有自动提示了,肯定是这里的问题,但不知道怎么办... 请大家帮忙看看,为什么这个是错的啊?谢谢!
是worksheets("yours")这里出了问题,因为打完再输入range就没有自动提示了,肯定是这里的问题,但不知道怎么办?
展开
 我来答
小白聊电子科技
高粉答主

2020-10-20 · 专注电子数码问题解答
小白聊电子科技
采纳数:775 获赞数:75474

向TA提问 私信TA
展开全部

1、首先在SHEET表内设置好按钮,并指定到宏,(宏所在SHEET的名称为“图表”)。

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

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

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

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

很多游戏
高粉答主

2019-10-13 · 游戏精通者,攻略技能点满
很多游戏
采纳数:91 获赞数:387004

向TA提问 私信TA
展开全部

Excel中vba提示下标超界,说明对象不存在或者数组元素不存在。

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

简单的理解:下标越界就是引用超出了所在的范围。

1、当我们在excel的VBA中输入下面代码,运行,就会出现“运行时错误9下标越界”的提示。代码如下:

Sub a()
Dim arr() As String
arr(1) = "你好"
End Sub

2、其实上面的“运行时错误9下标越界”是因为定义的动态数组没有确定维数和尺寸。定义成固定维数和尺寸的,或用Redim界定一下维数和尺寸即可解决此问题。

改正后的代码如下:

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,就可以了

扩展资料:

VB中的数组越界

引用了不存在的数组元素。

下标可能比下标范围大或小,或是在应用程序中这一边的数组没有指定范围。检查数组的声明以确认其上界和下界。若使用的是重新指定范围的数组,应使用 UBound 和 LBound 函数来决定数组访问。如果索引指定为变量,应检查变量名的拼写。

声明数组时没有指定元素的数目。例如,下列的代码就会导致此错误:

Dim MyArray() As Integer

MyArray(8) = 234 ' 导致错误 9。

Visual Basic 并不会将没有指定范围的数组自动设为 0 – 10。相反必须使用 Dim 或 ReDim 来指定数组中元素的数目。

引用了不存在的集合成员。

试着使用 For Each...Next 结构代替指定元素下标。

使用速写形式的下标,结果指定了错误的元素。

参考资料来源:百度百科-下标越界

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
BAIXINGR

推荐于2017-04-22 · TA获得超过3万个赞
知道大有可为答主
回答量:2.9万
采纳率:89%
帮助的人:8830万
展开全部

你工作薄名称的后缀不对,应该是。XLSX才对,还有如果是2007以上版本,有宏的工作薄后缀为.XLSM。才对,你试着改下这里试试

这样才对

更多追问追答
追问
这里没有问题喔,是sheets("yours")的问题,因为打完这个就没有自动提示出现了,但不知道是什么原因。莫非sheets没有激活?也不知怎样激活...遇到大神了,我要提升悬赏金!
追答
我现在也不知道你是哪里的问题了,你是不是在没写sheets("yours")这个之前提示啊,如果是的话就是,你没有指定路劲,所以找不到目标造成溢出的问题,就提示越界了,或者是工作表yours的名称与程序中的不对称,建议将程序中的名称复制粘贴为工作表名试下
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wtx274321
2014-03-16 · TA获得超过1.8万个赞
知道大有可为答主
回答量:2343
采纳率:57%
帮助的人:958万
展开全部
所谓下标越界就是没有找到的意思,这里的与下标有关的就是工作簿workbooks、工作表sheets和单元格range了,这3者之一没有找到都会提示下标越界。workbooks必须打开了工作簿才能找得到,在这种前提下sheets必须存在才行,range只要语法不错一般不会有问题。当然sheets最好写成worksheets。
追问
请问msgbox是干什么的呀?我输入msgbox ("hello"),运行后什么反应都没有哟 T ^ T
追答
MsgBox是Visual Basic和VBS中的函数,功能是弹出一个对话框,等待用户单击按钮,并返回一个Integer值告诉用户单击哪一个按钮。“MsgBox”即为“Message Box”,英语中意为“信箱”。
你输入的msgbox ("hello")应该去掉括号,即msgbox "hello"才对
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式