VBA – 自定义functionclosures工作簿 – 不工作

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

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

我使用命令FileIO.CloseExcelFile(catWorkBook)来调用这个方法。 variablescatWorkBook是我创build的工作簿的对象引用(在之前的一个步骤中)。

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

对象不支持此方法或属性

下面的命令closures工作簿,没有错误。

 catWorkBook.Close 

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

你只是有你的Not错误的地方。 试试像这样:

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

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

这里也不需要Function 。 将其更改为一个Sub 。 事实上,当你把它缩小到一行时,你几乎不需要Sub:

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

错误是由于我调用子例程的方式不正确。 我调用子例程为: –

 FileIO.CloseExcelFile(catWorkBook) 

调用函数的正确方法本来就是这样的。

 FileIO.CloseExcelFile catWorkBook