这似乎是一个简单的功能,解决方案应该很简单,但我找不到问题。
我有一个在子程序中调用的函数,它检查文件是否打开,如果没有打开,则将其打开。该函数可以正常运行,但是当它返回到调用它的主子变量时,变量(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
当返回主子变量时,函数变量的值丢失了,这是我错在哪里?
这似乎是一个简单的功能,解决方案应该很简单,但是我找不到问题。我有一个在子程序中调用的函数,它检查文件是否打开,如果不打开,则将其打开。...
简单使用
我认为问题出在您的wbOpen
函数中。您正在本地设置该工作簿对象,而不返回Boolean
的值。见下文: