2

给定一个像这样的通用 LAMBDA-UNION-function:https ://stackoverflow.com/a/69861437/16578424 :

在多个项目中重用它的最佳方法是什么?

4

1 回答 1

2

我在某处读到开发人员正在研究一种共享 lambdas 的方法,但我还没有看到任何东西。同时,将工作簿 A 中的 lambda 共享到工作簿 B 就像将任何工作表(甚至是空白)从工作簿 A 复制到 B 一样简单(然后如果您愿意,可以将其删除)。

有一个令人讨厌的缺点 - 如果 B 中已经存在 lambda,Excel 会添加 A 的同名版本,但将范围限制为复制的工作表。这意味着它将仅适用于复制的工作表,其他工作表将继续使用原始 lambda。(如果您随后删除复制的工作表,则范围受限的 lambda 将随之消失)。

这意味着,如果您想增强或更正现有的 lambda,则无法复制工作表。所以我在下面编写了代码来做到这一点。

Sub CopyLambdas()
    Dim wb As Workbook, n, List
    'make a concatenated list of lambdas in this workbook
    List = "|"                                   'delimiter is |
    For Each n In ThisWorkbook.Names
        If InStr(1, n.value, "lambda", vbTextCompare) > 0 Then
            List = List & n.Name & "|"
        End If
    Next n
       
    'process all open workbooks (except this one of course)
    For Each wb In Workbooks
        If Not wb Is ThisWorkbook Then
            With wb
                For Each n In .Names             'look for lambdas
                    If InStr(1, n.value, "lambda", vbTextCompare) > 0 Then
                        'if this lambda has a name that's in our list, delete it
                        If InStr(1, "|" & n.Name & "|", n.Name, vbTextCompare) > 0 Then n.Delete
                    End If
                Next n
                ThisWorkbook.Sheets("Lambdas").Copy After:=.Sheets(.Sheets.Count)
            End With
        End If
    Next wb
End Sub
于 2021-11-11T09:10:28.263 回答