VBA - 用于关闭工作簿的自定义功能 - 无法正常工作

时间:2017-11-17 15:18:24

标签: excel vba excel-vba

我正在尝试编写一个简单的函数(在模块FileIO中),它将获取工作簿的实例,然后关闭它。此函数从另一个模块Business调用。 以下是代码段。

Public Function CloseExcelFile(wkBook As Workbook)
    If (wkBook Is Not Nothing) Then
        wkBook.Save
        wkBook.Close
    End If
End Function

我使用命令FileIO.CloseExcelFile(catWorkBook)调用此方法。变量catWorkBook是我创建的工作簿的对象引用(之前的步骤)。

当我尝试调用自定义函数时,我收到错误

  

对象不支持此方法或属性

以下命令关闭工作簿,没有错误。

catWorkBook.Close

但是当我使用自定义函数时也不会发生这种情况。这里出了什么问题?

3 个答案:

答案 0 :(得分:2)

正如braX指出的那样,你的Not不在正确的位置。

此处您也不需要Function。将其更改为Sub。事实上,当你将它减少到这样的一行时,你几乎不需要Sub:

Public Sub CloseExcelFile(wkBook As Workbook)
    If Not wkBook Is Nothing Then wkBook.Close(SaveChanges:=True)
End Sub

答案 1 :(得分:2)

您的Not位于错误的位置。试试这样:

Public Function CloseExcelFile(wkBook As Workbook)
    If Not wkBook Is Nothing Then
        wkBook.Save
        wkBook.Close
    End If
End Function

答案 2 :(得分:0)

错误是由于我正在调用子例程的 INCORRECT 方式。我将子例程调用为: -

FileIO.CloseExcelFile(catWorkBook) 

调用函数的 CORRECT 方式就是这样。

FileIO.CloseExcelFile catWorkBook