以下代码是从日志文件中删除重复行的子的开头,因此是名称。但是,在测试了我到目前为止的内容后,我无法理解为什么这会给我一个错误。这是代码:
Sub cleanUpLogFile()
Dim logFileStr As String
Dim newBook As Workbook
Dim fd1 As FileDialog
MsgBox "Select your log file.", vbInformation, "Important Info"
Set fd1 = Application.FileDialog(msoFileDialogFilePicker)
With fd1
.AllowMultiSelect = False
.Filters.Clear
.Filters.Add "*.xl* Files", "*.xl*", 1
'if user selects a file then
If .Show Then
'assign selection to variable
logFileStr = fd1.SelectedItems.Item(1)
Else 'display prompt and exit sub
MsgBox "You didn't select your indexation file. Exiting...", _
vbCritical, "Important Info"
Exit Sub
End If
End With
Set newBook = Workbooks.Open(logFileStr, 0)
newBook.Close (0)
Set newBook = Nothing
MsgBox "finished"
errHandler:
MsgBox "Encountered an error: " & Err.Number & " -> " & Err.Description, _
vbExclamation, "Error! - from cleanUpLogFile() sub"
Err.Clear
Exit Sub
End Sub
错误消息框也没有给我太多信息; <{1}}显示为“0”,而err.Number
的相应说明不存在。
有什么想法吗?
谢谢, QF。
答案 0 :(得分:2)
您在errHandler:label。
之前缺少一个Exit Sub语句VB中的标签实际上只是代码中某个位置的书签,因此如果您希望在重新启动标签下方的代码之前退出函数,则需要告诉它这样做。
在你的情况下,即使没有错误,errHandler:标签下面的代码也会运行,输出确实是“没有错误”。
因此,请将您的代码更改为:
... more code
Set newBook = Nothing
MsgBox "finished"
Exit Sub
errHandler:
MsgBox "Encountered an error: " & Err.Number & " -> " & Err.Description, _
vbExclamation, "Error! - from cleanUpLogFile() sub"
Err.Clear
Exit Sub
End Sub
答案 1 :(得分:0)
您可以通过最初尝试运行有效的方法进行故障排除。如果它没有运行空的With ... End With然后错误在外面。否则你会知道它在里面。然后在With ... End With中添加一行,看看错误弹出的时间,然后尝试修改该行。
希望这有帮助。