Excel 实现用于在宏中重复代码的子例程

Excel 实现用于在宏中重复代码的子例程,excel,vba,Excel,Vba,我想知道有没有办法缩短我目前的代码。我在我的许多宏中运行一个进程,并且正在考虑子程序。我试过几种方法,但都没能奏效 我多次执行一次搜索: Sub AddFileToDC() '... I am getting oDCSearchConditions from the search, then ' Execute the search Dim oDCObjectSearchResults As MFilesAPI.ObjectSearchResults Set

我想知道有没有办法缩短我目前的代码。我在我的许多宏中运行一个进程,并且正在考虑子程序。我试过几种方法,但都没能奏效

我多次执行一次搜索:

Sub AddFileToDC()

    '... I am getting oDCSearchConditions from the search, then

    ' Execute the search
    Dim oDCObjectSearchResults As MFilesAPI.ObjectSearchResults
    Set oDCObjectSearchResults = oVault.ObjectSearchOperations.SearchForObjectsByConditions(oDCSearchConditions, MFSearchFlagNone, False)

    ' Get a reference to the existing document collection
    Set oDocumentCollectionOVAP = oVault.ObjectOperations.GetObjectVersionAndProperties(oDCObjectSearchResults.Item(1).ObjVer)

    Set oOldDocumentOVAP = oVault.ObjectOperations.GetObjectVersionAndProperties(oObjectSearchResults.Item(1).ObjVer)

End Sub
在所有其他宏中,我正在执行另一个搜索,从中可以获得
oObjectSearchResults

是否可以执行以下操作,而不是将上述代码复制到所有宏中:

Sub Code1()

    '... I am getting oSearchConditions from the search, then

        ' Execute the search
        Dim oObjectSearchResults As MFilesAPI.ObjectSearchResults
        Set oObjectSearchResults = oVault.ObjectSearchOperations.SearchForObjectsByConditions(oSearchConditions, MFSearchFlagNone, False)

    AddFileToDC

End Sub

现在,在运行
Code1
时,我收到一条错误消息,说variable
oDCObjectSearchResults
未定义为另一个子
AddFileToDC

在设置变量后从调用的宏中删除设置/标注时,将类似的命名变量设置为全局变量:

Public oObjectSearchResults As MFilesAPI.ObjectSearchResults

Sub Code1()

        ' Execute the search
        Set oObjectSearchResults = oVault.ObjectSearchOperations.SearchForObjectsByConditions(oSearchConditions, MFSearchFlagNone, False)

    AddFileToDC

End Sub

Sub AddFileToDC()

    ' Get a reference to the existing document collection
    Set oDocumentCollectionOVAP = oVault.ObjectOperations.GetObjectVersionAndProperties(oDCObjectSearchResults.Item(1).ObjVer)

    Set oOldDocumentOVAP = oVault.ObjectOperations.GetObjectVersionAndProperties(oObjectSearchResults.Item(1).ObjVer)

End Sub

在两组代码中不能有相同的变量名,因为内存已分配给该特定变量名;调用宏
AddFileToDC
时,需要删除
Code1
中正在标注/设置的变量的标注/设置。您很可能需要全局地标注变量,以便两个子例程都可以使用它。