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 展开
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 展开
4个回答
展开全部
一般来讲下标越界是没有找到你要找的东东,如文件名,如该表的表名,某个数组的行列已超标,等等
你也没讲问题出在那句所以也不好讲
习惯查找问题的方式就是利用断点,找到那句出错,查看那里的所有变量名字,或你想要的名字是否实际存在
Set xlApp = New Excel.Application
我没用过,如果它会产生一个新的进程的话,那么你会出现很多麻烦
你也没讲问题出在那句所以也不好讲
习惯查找问题的方式就是利用断点,找到那句出错,查看那里的所有变量名字,或你想要的名字是否实际存在
Set xlApp = New Excel.Application
我没用过,如果它会产生一个新的进程的话,那么你会出现很多麻烦
追问
这个表有一个“汇总键”按下它后就会把此张表的数据汇总到“质量信息汇总表(台账)”这张表上 问题是现在一按汇总键 就会提示下标越界
追答
你要在VBE中看那句出错了,
一般的做法时是:ALT+F11>>工具>>选项>>通用>>错误捕捉>>产生错误时中断
设置好后重新运行产生错误的过程
会在出错的那一句上显示黄色(默认时)
再用立即窗口查询各个变量,就可知道越界的是什么地方了
之后再酌情处理相关的问题
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
最好把表格内容发出来,要不看的有点晕
我认为“Set xlApp = New Excel.Application
xlApp.Visible = False“
在excel宏里面用不着这样增加工作簿。直接Mybook = workbooks.add就行了
我认为“Set xlApp = New Excel.Application
xlApp.Visible = False“
在excel宏里面用不着这样增加工作簿。直接Mybook = workbooks.add就行了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
读了好几遍,程序没什么大问题,有个小问题,不知道是否是这个:
----
Dim path As String
path = ActiveWorkbook.path
-----
path 是 系统的关键字,定义变量时,尽量避免使用这些关键字的名字
另外代码中,使用了另一个程序 writeLocalInfo 和 一个自定义函数 writeInfo
-----
'更新反馈表中信息
writeLocalInfo
Set xlSheet = xlBook.Sheets(1)
'更新汇总表信息
flag = writeInfo(xlSheet)
----
有可能是在 writeLocalInfo程序 和 writeInfo自定义函数 中的错误
----
Dim path As String
path = ActiveWorkbook.path
-----
path 是 系统的关键字,定义变量时,尽量避免使用这些关键字的名字
另外代码中,使用了另一个程序 writeLocalInfo 和 一个自定义函数 writeInfo
-----
'更新反馈表中信息
writeLocalInfo
Set xlSheet = xlBook.Sheets(1)
'更新汇总表信息
flag = writeInfo(xlSheet)
----
有可能是在 writeLocalInfo程序 和 writeInfo自定义函数 中的错误
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询