Excel VBA对话框
我有以下代码:Excel VBA对话框,excel,vba,Excel,Vba,我有以下代码: Public Function get_workbook() As String Dim fd As Office.FileDialog Set fd = Application.FileDialog(msoFileDialogFilePicker) fd.AllowMultiSelect = False fd.Title = "Please select the file." fd.Show get_workbook = fd.S
Public Function get_workbook() As String
Dim fd As Office.FileDialog
Set fd = Application.FileDialog(msoFileDialogFilePicker)
fd.AllowMultiSelect = False
fd.Title = "Please select the file."
fd.Show
get_workbook = fd.SelectedItems(1)
End Function
这很有效。但是,如果用户在打开对话框后关闭该对话框,则会出现:
引发“无效过程调用或参数”错误
我将如何着手处理此错误?
例如,函数只是退出,而不是抛出错误
编辑:
我使用这段代码让用户打开一个同样有效的文件
Dim wb as Workbook
Set wb = Workbooks.Open(get_workbook(), ReadOnly:=True)
添加一个错误处理程序。我使用了一个select case,以便在出现其他错误时可以添加它们
Public Function get_workbook() As String
On Error GoTo errcatch
Dim fd As Office.FileDialog
Set fd = Application.FileDialog(msoFileDialogFilePicker)
fd.AllowMultiSelect = False
fd.Title = "Please select the file."
fd.Show
get_workbook = fd.SelectedItems(1)
on error goto 0
Exit Function 'Stop code from going into error handler without an error
errcatch:
Select Case Err.Number 'Do something based on error number
Case 5
on error goto 0
Exit Function
End Select
End Function
添加一个错误处理程序。我使用了一个select case,以便在出现其他错误时可以添加它们
Public Function get_workbook() As String
On Error GoTo errcatch
Dim fd As Office.FileDialog
Set fd = Application.FileDialog(msoFileDialogFilePicker)
fd.AllowMultiSelect = False
fd.Title = "Please select the file."
fd.Show
get_workbook = fd.SelectedItems(1)
on error goto 0
Exit Function 'Stop code from going into error handler without an error
errcatch:
Select Case Err.Number 'Do something based on error number
Case 5
on error goto 0
Exit Function
End Select
End Function
非常感谢。当我取消对话框时,我得到一个错误:Set wb=Workbooks.Open(get_workbook(),ReadOnly:=True)错误是:“运行时错误'1004':抱歉,我们找不到。它是否可能被移动了..等等”,这是因为您没有返回任何内容,函数刚刚结束。您将需要在调用子函数/函数中使用另一个错误处理程序,或者使用
if
语句检查空字符串。是的,我想是这样,现在正在解决它!干杯!可能值得在退出前添加“错误时继续下一步”function@zac这不会有任何作用他得到的错误是在一个不同的子,在错误恢复下一个应该只在少数边缘的情况下使用它只是隐藏错误,它不会处理它。谢谢!当我取消对话框时,我得到一个错误:Set wb=Workbooks.Open(get_workbook(),ReadOnly:=True)错误是:“运行时错误'1004':抱歉,我们找不到。它是否可能被移动了..等等”,这是因为您没有返回任何内容,函数刚刚结束。您将需要在调用子函数/函数中使用另一个错误处理程序,或者使用if
语句检查空字符串。是的,我想是这样,现在正在解决它!干杯!可能值得在退出前添加“错误时继续下一步”function@zac这不会做任何事情,他得到的错误是在一个不同的子,在错误恢复下一步应该只在少数边缘的情况下使用它只是隐藏错误,它不会处理它。