用于返回记录集的excel vba函数

用于返回记录集的excel vba函数,excel,adodb,vba,Excel,Adodb,Vba,我有一个VBA函数,它返回一个记录集,这个记录集在一个子例程中使用。函数本身存在于一个模块中。虽然函数本身成功返回记录集,但我有两个问题: 如果我试图关闭函数中的连接,则会导致应用程序失败 如果我在使用子例程后尝试关闭记录集,则会导致应用程序失败 那么,如何在返回记录集后关闭函数中的连接,并在使用记录集后关闭它 My函数建立连接,打开其,并执行查询。使用记录集后,它必须关闭 当记录集处于活动状态时,它会消耗资源。使用记录集后,您应该释放它使用的内存,以便计算机的其他对象可以使用它们。这是通过不向

我有一个VBA函数,它返回一个
记录集
,这个
记录集
在一个子例程中使用。函数本身存在于一个模块中。虽然函数本身成功返回
记录集
,但我有两个问题:

  • 如果我试图关闭函数中的连接,则会导致应用程序失败
  • 如果我在使用子例程后尝试关闭
    记录集
    ,则会导致应用程序失败
  • 那么,如何在返回记录集后关闭函数中的连接,并在使用记录集后关闭它


    My函数建立连接,打开其,并执行查询。

    使用记录集后,它必须关闭

    当记录集处于活动状态时,它会消耗资源。使用记录集后,您应该释放它使用的内存,以便计算机的其他对象可以使用它们。这是通过不向记录集对象分配任何内容来完成的。以下是一个例子:

    'Clean Up
    rsTemp.Close 'closing recordset
    Set rsTemp= Nothing ' free the memory
    
    您也可以在最后关闭连接

    If con.State = adStateOpen Then
     con.Close
    End If
    
    If Not con Is Nothing Then Set con = Nothing
    

    不要把它当作一种功能。将其模块化为子例程

    请显示您的代码。记录集依赖于实时连接才能工作。在使用完所有记录集之前,不应尝试关闭连接。在返回记录集的函数中,如果我将记录集和连接设置为nothing或close,则代码将失败,并且不会向调用子例程返回任何内容。我已尝试关闭调用子例程中使用的记录集,但正如我所说的,它失败了。您将在子例程中关闭记录集以避免其失败,并关闭函数中的连接以避免其失败?@Andy5您可以创建一个包含该记录集的函数。让函数返回记录集…在调用函数中使用记录集,然后关闭记录集。