excel vba 运行错误“9” 下标越界

excelvba运行错误“9”下标越界t=Cells(Rows.Count,"a").End(xlUp).RowFori=1Tot-1s=Split(Cells(i,"a... excel vba 运行错误“9” 下标越界t = Cells(Rows.Count, "a").End(xlUp).Row
For i = 1 To t - 1

s = Split(Cells(i, "a"), "与")
a = s(0): b = s(1)
If s(0) = "电动车" Then
a = s(0): b = s(1)
Else
b = s(0): a = s(1)
End If

j = Split(Cells(i + 1, "a"), "与")
c = j(0): d = j(1)
If j(0) = "电动车" Then
c = j(0): d = j(1)
Else
d = j(0): c = j(1)
End If
If InStr(d, b) Or InStr(b, d) Then
Cells(i, "B") = 1
End If
Next i

调试显示 : d = j(1)有问题,应该怎么改?
展开
 我来答
很多游戏
高粉答主

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

向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 结构代替指定元素下标。

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

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

Excel办公_VBA
2017-05-11 · 教育领域创作者
个人认证用户
Excel办公_VBA
采纳数:3279 获赞数:2332

向TA提问 私信TA
展开全部
在提醒下标越界的时候,选择调试
看看黄色行代码各个参数
数组是不是超界了
发现有问题的时候,看看数组设置的边界啊
需要结合附件内容,编程思路,才能解决这个的
更多追问追答
追问
我举几个例子吧:
电动车与出租
出租车与电动车
#VALUE
电动车和行人

数据特点是基本上都会有“电动车”,我想分析一下相邻两行的相似程度,之后删除重复项
因为是提取的内容,所以有的会有错误,例如#VALUE,或什么都没有
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
落云拔4681
2017-05-11 · TA获得超过314个赞
知道答主
回答量:322
采纳率:0%
帮助的人:88.5万
展开全部
Excel提示下标越界是VBA程序运行的一个错误提示,原因有以下几个:1、引用了不存在的数组元素:下标比可能下标范围大或小,或是在应用程序中这一边的数组没有指定范围。2、声明数组时没有指定元素的数目:引用了不存在的集合成员。3、使用速写形式的下标,结果指定了错误的元素。4、引用或操作的工作薄、工作表不存在。
追问
数据是被提取出来的,有的会显示#value,有影响么
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
士萍和忆远
2020-04-24 · TA获得超过3966个赞
知道大有可为答主
回答量:3055
采纳率:30%
帮助的人:434万
展开全部
将 Cells(i,
4)
=
Right(Cells(i,
3).Hyperlinks(1).ScreenTip,
6)
语句改为:

If
Cells(i,
3).Hyperlinks.Count
> 0
Then
Cells(i,
4)
=
Right(Cells(i,
3).Hyperlinks(1).ScreenTip,
6)
End
If
理由:当第三列单元格内容不为空或“款式”时,若该单元格不包含任何超链接,则返回错误,因此增加一个判断语句,该单元格的超链接个数大于等于1时,才可以显示屏幕提示的后六个文字,否则跳过。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
adc大神fly
2017-05-15 · TA获得超过305个赞
知道答主
回答量:740
采纳率:0%
帮助的人:99.4万
展开全部
j=array(1,1) 加最上面
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式