任何人都可以在VBA中找到'On error goto -1'和'on error goto 0'之间的区别?我试过谷歌和msdn,但我没有运气.
我正试图在excel中遍历一个表.该表的前三列有文本标题,其余部分的日期为标题.我想按顺序将这些日期分配给Date类型变量,然后根据日期执行一些操作
为此,我在myTable.ListColumns上使用foreach循环.由于前三列没有日期标题,我试图设置循环,以便,如果将标题字符串分配给日期类型变量时出错,则循环直接进入下一列
这似乎适用于第一列.但是,当第二列的标题被"赋值"给日期类型变量时,即使宏位于错误处理块内,宏也会遇到错误
Dim myCol As ListColumn
For Each myCol In myTable.ListColumns
On Error GoTo NextCol
Dim myDate As Date
myDate = CDate(myCol.Name)
On Error GoTo 0
'MORE CODE HERE
NextCol:
On Error GoTo 0
Next myCol
Run Code Online (Sandbox Code Playgroud)
重申一下,在语句的第二轮循环中抛出错误
myDate = CDate(myCol.Name)
Run Code Online (Sandbox Code Playgroud)
任何人都可以解释为什么On Error语句停止工作?
我正在使用我的程序的第一部分
在错误上开始
假设在我的第二部分我再次使用
在错误恢复下
第二个错误陷阱将不会被激活,因为第一个错误陷阱仍将处于活动状态.有没有办法在使用后取消激活第一个错误处理程序?
Set objexcel = CreateObject("excel.Application")
objexcel.Visible = True
On Error GoTo Openwb
wbExists = False
Set wbexcel = objexcel.Workbooks.Open("C:\REPORT3.xls")
Set objSht = wbexcel.Worksheets("Sheet1")
objSht.Activate
wbExists = True
Openwb:
On Error GoTo 0
If Not wbExists Then
objexcel.Workbooks.Add
Set wbexcel = objexcel.ActiveWorkbook
Set objSht = wbexcel.Worksheets("Sheet1")
End If
On Error GoTo 0
Set db = DBEngine.opendatabase("C:\book.mdb")
Set rs = db.OpenRecordset("records")
Set rs2 = CreateObject("ADODB.Recordset")
rs2.ActiveConnection = CurrentProject.Connection
For Each tdf In CurrentDb.TableDefs
If Left(tdf.Name, 4) <> "MSys" …Run Code Online (Sandbox Code Playgroud)