Excel VBA检查文件是否为打开功能

问题描述 投票:0回答:2

这似乎是一个简单的功能,解决方案应该很简单,但我找不到问题。

我有一个在子程序中调用的函数,它检查文件是否打开,如果没有打开,则将其打开。该函数可以正常运行,但是当它返回到调用它的主子变量时,变量(True或False)丢失了值,并且在主行Set wb = Workbooks(MasterFileF)的行中收到错误9:subscript out of range子]。

Function wbOpen(wbName As String) As Boolean
Dim wbO As Workbook

    On Error Resume Next
        Set wbO = Workbooks(wbName)
        wbOpen = Not wbO Is Nothing
        Set wbO = Nothing

End Function



Sub Macro5()

Dim wb As Workbook
Dim path As String
Dim MasterFile As String
Dim MasterFileF As String


Application.ScreenUpdating = False

'Get folder path
path = GetFolder()
If path = "" Then
    MsgBox "No folder selected. Please start macro again and select a folder"
    Exit Sub
Else
End If


MasterFile = Dir(path & "\*Master data*.xls*")
MasterFileF = path & "\" & MasterFile

'Check if workbook open if not open it
If wbOpen(MasterFile) = True Then
    Set wb = Workbooks(MasterFileF)
Else
    Set wb = Workbooks.Open(MasterFileF)
End If

当返回主子变量时,函数变量的值丢失了,这是我错在哪里?

这似乎是一个简单的功能,解决方案应该很简单,但是我找不到问题。我有一个在子程序中调用的函数,它检查文件是否打开,如果不打开,则将其打开。...

excel vba function variables boolean
2个回答
0
投票

简单使用


0
投票

我认为问题出在您的wbOpen函数中。您正在本地设置该工作簿对象,而不返回Boolean的值。见下文:

© www.soinside.com 2019 - 2024. All rights reserved.