excel 宏,运行错误9 ,下标越界
这是比较两个表.执行的时候老是提示“运行错误9,下标越界”Sub交叉电子表比较宏()''Macro1Macro'''=============比较字段并标记单元格====...
这是比较两个表. 执行的时候老是提示“运行错误9,下标越界”
Sub 交叉电子表比较宏()
'
' Macro1 Macro
'
'
'=============比较字段并标记单元格===========
a = "A表"
MsgBox ("程序运行提示:请注意切换到中文半角输入,所有输入的数字不能为中文数字")
a = InputBox("请输入A工作表名称【这一张表是运动表, 即用这张表上的每一条数据逐一的和另一张参照表的每一条数据作比对!】(如:A表):")
agj = InputBox("请输入A工作表需要比较的关键字段列序号【这个字段是运动表和参照表都有的相同数据的关键字段,从左起分别为1列,2列...,依此类推关键字段列序号】(如:1 2 3 ..):")
abj = InputBox("请输入A工作表中空字段列号【这个字段一定是没数据的字段,一般输入末尾字段,用来在A工作表中标记B工作表中也发现有这一条数据的标记。】(如:20, 21,22..):")
B = "B表"
B = InputBox("请输入B工作表【参照表表名,这是一张静止表,等待A工作表的每一条记录来和它的每一条记录作比对】(如:B表):")
bgj = InputBox("请输入B工作表需要比较的关键字段的列序号【参照表,关键字段列序号】(如:1 2 3 ..):")
bbj = InputBox("请输入B工作表目前无数据的空列序号【参照表,一般输入末尾空字段,用来在A工作表中标记B工作表中也发现有这一条数据的标记。】(如:15, 23..):")
MsgBox ("比较马上开始,请稍后.....请一直等到提示窗口出现!!! 若出现“错误提示9,下标界越”的错误提示:请点击“结束”,重新运行宏,重新检查输入数据!")
n = 0
i = 1
Do While Sheets(a).Cells(i, 1) <> ""
j = 1
Do While Sheets(B).Cells(j, 1) <> ""
If Trim(Sheets(a).Cells(i, Val(agj))) = Trim(Sheets(B).Cells(j, Val(bgj))) Then
Sheets(a).Cells(i, Val(abj)) = "【" & B & "表中有】"
Sheets(B).Cells(j, Val(bbj)) = "【" & a & "表中有】"
'数据字段拷贝区 (默认为将运动表考第二列数据拷贝到参照表第2列)
'Sheets(B).Cells(j, 2) = Sheets(a).Cells(i, 2)
n = n + 1
End If
j = j + 1
Loop
i = i + 1
Loop
MsgBox ("已写入" & n & "条数据")
'===========================================
End Sub 展开
Sub 交叉电子表比较宏()
'
' Macro1 Macro
'
'
'=============比较字段并标记单元格===========
a = "A表"
MsgBox ("程序运行提示:请注意切换到中文半角输入,所有输入的数字不能为中文数字")
a = InputBox("请输入A工作表名称【这一张表是运动表, 即用这张表上的每一条数据逐一的和另一张参照表的每一条数据作比对!】(如:A表):")
agj = InputBox("请输入A工作表需要比较的关键字段列序号【这个字段是运动表和参照表都有的相同数据的关键字段,从左起分别为1列,2列...,依此类推关键字段列序号】(如:1 2 3 ..):")
abj = InputBox("请输入A工作表中空字段列号【这个字段一定是没数据的字段,一般输入末尾字段,用来在A工作表中标记B工作表中也发现有这一条数据的标记。】(如:20, 21,22..):")
B = "B表"
B = InputBox("请输入B工作表【参照表表名,这是一张静止表,等待A工作表的每一条记录来和它的每一条记录作比对】(如:B表):")
bgj = InputBox("请输入B工作表需要比较的关键字段的列序号【参照表,关键字段列序号】(如:1 2 3 ..):")
bbj = InputBox("请输入B工作表目前无数据的空列序号【参照表,一般输入末尾空字段,用来在A工作表中标记B工作表中也发现有这一条数据的标记。】(如:15, 23..):")
MsgBox ("比较马上开始,请稍后.....请一直等到提示窗口出现!!! 若出现“错误提示9,下标界越”的错误提示:请点击“结束”,重新运行宏,重新检查输入数据!")
n = 0
i = 1
Do While Sheets(a).Cells(i, 1) <> ""
j = 1
Do While Sheets(B).Cells(j, 1) <> ""
If Trim(Sheets(a).Cells(i, Val(agj))) = Trim(Sheets(B).Cells(j, Val(bgj))) Then
Sheets(a).Cells(i, Val(abj)) = "【" & B & "表中有】"
Sheets(B).Cells(j, Val(bbj)) = "【" & a & "表中有】"
'数据字段拷贝区 (默认为将运动表考第二列数据拷贝到参照表第2列)
'Sheets(B).Cells(j, 2) = Sheets(a).Cells(i, 2)
n = n + 1
End If
j = j + 1
Loop
i = i + 1
Loop
MsgBox ("已写入" & n & "条数据")
'===========================================
End Sub 展开
1个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |