Taw*_*awm 2 excel file-io vba excel-vba
我有两种方法,我认为如果文件是打开的话应该告诉我.
方法1(错误:下标超出范围):
If Not Workbooks(filename) Is Nothing Then
Workbooks.Open (filename)
End If
Run Code Online (Sandbox Code Playgroud)
方法2:
If Not IsWorkbookOpen(filename) Then
Workbooks.Open (filename)
End If
Run Code Online (Sandbox Code Playgroud)
在哪里IsWorkbookOpen()
:
Private Function IsWorkbookOpen(wbname) As Boolean
Dim wBook As Workbook
Set wBook = Nothing
On Error Resume Next
Set wBook = Workbooks(wbname)
If wBook Is Nothing Then
IsWorkbookOpen = False
Else: IsWorkbookOpen = True
End If
End Function
Run Code Online (Sandbox Code Playgroud)
除此之外On Error Resume Next
,方法1似乎与方法2几乎相同.
任何人都可以解释为什么方法1给出错误吗?
谢谢.
它们都给出了一个超出范围误差的下标.但是在方法2中,您可以使用On Error Resume Next
.
Sub SeeError()
On Error Resume Next
Debug.Print Workbooks("DoesNotExist").Name
Debug.Print Err.Description
End Sub
Run Code Online (Sandbox Code Playgroud)
这会在立即窗口中打印"下标超出范围".On Error语句不会停止发生错误,它只是处理它.方法1不处理错误,因此默认错误处理(停止执行并报告错误)生效.
归档时间: |
|
查看次数: |
2502 次 |
最近记录: |