EXCEL VBA 宏 下标越界问题

PrivateSubCommandButton1_Click()OnErrorGoToErr_HandleThisWorkbook.ActivateIf(Trim(Act... Private Sub CommandButton1_Click()
On Error GoTo Err_Handle
ThisWorkbook.Activate
If (Trim(ActiveSheet.Cells(3, 12).Value) = "") Then
MsgBox "【编号】不能为空!"
ActiveSheet.Cells(3, 12).Interior.ColorIndex = 3
Exit Sub
End If
ActiveSheet.Cells(3, 12).Interior.ColorIndex = xlNone

Dim xlApp As Excel.Application
Dim xlBook As Excel.Workbook
Dim xlSheet As Excel.Worksheet

Dim path As String
path = ActiveWorkbook.path

Set xlApp = New Excel.Application
xlApp.Visible = False

For j = 1 To Workbooks.Count
If Trim(Workbooks(j).Name) = Trim("质量信息汇总表(台账).xlsx") Then
MsgBox "请先关闭【质量信息汇总表(台账).xlsx】,再执行汇总!"
xlApp.Quit
Set xlApp = Nothing
Exit Sub
End If
Next

Set xlBook = xlApp.Workbooks.Open(path & "\质量信息汇总表(台账).xlsx")

If xlBook Is Nothing Then
MsgBox "当前目录下没有【质量信息汇总表(台账)】表,请将汇总表拷贝至当前目录!"
xlBook.Close SaveChanges:=False
xlApp.Quit
Set xlApp = Nothing
Set xlBook = Nothing
Set xlSheet = Nothing
Exit Sub
End If
'更新反馈表中信息
writeLocalInfo

Set xlSheet = xlBook.Sheets(1)
'更新汇总表信息
flag = writeInfo(xlSheet)

'xlApp.DisplayAlerts = False
'xlBook.Save
'xlBook.Close
xlBook.Close SaveChanges:=True

xlApp.Quit
Set xlApp = Nothing
Set xlBook = Nothing
Set xlSheet = Nothing

If flag Then
MsgBox "汇总完成!"
End If
Exit Sub

Err_Handle:
xlApp.Quit
Set xlApp = Nothing
Set xlSheet = Nothing
Set xlBook = Nothing
MsgBox Err.Description
End Sub
展开
 我来答
boywin007
2011-05-13 · TA获得超过118个赞
知道答主
回答量:14
采纳率:0%
帮助的人:7.4万
展开全部
一般来说,在引用Workbook或Worksheet时候,直接引用名称比较牢靠,况且有时必须激活Workbook或Worksheet后,才可使用某些属性或方法(并非全部)!否则容易出现如题的错误。
追问
那具体怎么改呢 请把代码给出吧 名称的话你先假定一个即可
sunsoncheng
2011-05-13 · TA获得超过305个赞
知道小有建树答主
回答量:114
采纳率:0%
帮助的人:66.9万
展开全部
一般来讲下标越界是没有找到你要找的东东,如文件名,如该表的表名,某个数组的行列已超标,等等

你也没讲问题出在那句所以也不好讲

习惯查找问题的方式就是利用断点,找到那句出错,查看那里的所有变量名字,或你想要的名字是否实际存在

Set xlApp = New Excel.Application
我没用过,如果它会产生一个新的进程的话,那么你会出现很多麻烦
追问
这个表有一个“汇总键”按下它后就会把此张表的数据汇总到“质量信息汇总表(台账)”这张表上 问题是现在一按汇总键 就会提示下标越界
追答
你要在VBE中看那句出错了,
一般的做法时是:ALT+F11>>工具>>选项>>通用>>错误捕捉>>产生错误时中断
设置好后重新运行产生错误的过程
会在出错的那一句上显示黄色(默认时)
再用立即窗口查询各个变量,就可知道越界的是什么地方了

之后再酌情处理相关的问题
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zzzhhhlll
2011-05-14 · 超过10用户采纳过TA的回答
知道答主
回答量:80
采纳率:0%
帮助的人:46.8万
展开全部
最好把表格内容发出来,要不看的有点晕
我认为“Set xlApp = New Excel.Application
xlApp.Visible = False“
在excel宏里面用不着这样增加工作簿。直接Mybook = workbooks.add就行了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
帐号已注销
2011-05-13 · TA获得超过8613个赞
知道大有可为答主
回答量:3242
采纳率:66%
帮助的人:2867万
展开全部
读了好几遍,程序没什么大问题,有个小问题,不知道是否是这个:
----
Dim path As String
path = ActiveWorkbook.path
-----
path 是 系统的关键字,定义变量时,尽量避免使用这些关键字的名字

另外代码中,使用了另一个程序 writeLocalInfo 和 一个自定义函数 writeInfo
-----
'更新反馈表中信息
writeLocalInfo
Set xlSheet = xlBook.Sheets(1)
'更新汇总表信息
flag = writeInfo(xlSheet)
----
有可能是在 writeLocalInfo程序 和 writeInfo自定义函数 中的错误
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式