gpt4 book ai didi

vba - 将所有命名范围提取到一个类中

转载 作者:行者123 更新时间:2023-12-04 20:14:27 24 4
gpt4 key购买 nike

我有一本包含大量命名范围(远超过 200 个)的工作簿。我真的需要一种方法来快速轻松地处理所有命名范围,这样我就可以使用 VBA 处理/填充它们。

到目前为止,我的解决方案是将代码放在一堆 get properties 中。在我的公开场合NamedRanges模块,将属性设置为等于命名范围,如下所示:

Public Property Get LotNumber49() As range
Set LotNumber49 = Common.GetRange(Strings.LotNumber49)
End Property

在哪里 Strings.LotNumber49是一个属性,它包含工作簿中记录的命名范围的名称, Common.GetRange是一种返回所需范围对象的新实例的方法。

虽然这个解决方案运行良好(我现在可以通过调用 NamedRanges.LotNumber49 访问该命名范围的实例)在 Strings 中键入属性绝对是耗时且乏味的 NamedRanges 中的类和另一个属性类(class)。

有没有更好的方法来完成任何人都能想到的命名范围的快速引用?也许迭代 Workbook.Names 返回的集合属性(property)?

谢谢大家,我有这本工作簿以及其他四个工作簿,这意味着很多命名范围!

最佳答案

通过字符串获取命名范围

为什么不像这样一个简单的程序:

Function GetNR(namedRange as String) as Range
Set GetNR = ActiveWorkbook.Names(namedRange).RefersToRange
End Function

然后像这样简单地获取命名范围:
Sub Example()
Debug.Print GetNR("NAME").Value
End Sub

VBA项目中的命名范围建议

或者 如果您希望在您的 VBA 项目中弹出名称,您需要重新定义 Strings 中的常量。类(class)。试试这个过程:
Sub GetAllNames()
Dim res As String, n As Name
For Each n In ActiveWorkbook.Names
If InStr(n.Name, "!") = 0 Then res = res & "Const " & n.Name & "=""" & n.Name & """" & vbNewLine
Next n
Dim fFile As Long
fFile = FreeFile
Open "out.txt" For Output As #fFile
Print #fFile, res
Close #fFile
End Sub

在修改命名范围时,您需要偶尔重复此操作:
  • 运行 GetAllNames程序
  • 打开out.txt文件
  • 将输出复制到您的 Strings类(class)或其他

  • 现在要获得命名范围,请使用您的 Common.GetRange方法以及您的 Strings名称或简单地使用上面的方法来生成 Getter像这样的代码:
    Sub GetAllGetters()
    Dim res As String, n As Name
    For Each n In ActiveWorkbook.Names
    If InStr(n.Name, "!") = 0 Then res = res & "Public Property Get " & n.Name & "() As range" & vbNewLine & "Set " & n.Name & " = Common.GetRange(Strings." & n.Name & ")" & vbNewLine & "End Property"
    Next n
    Dim fFile As Long
    fFile = FreeFile
    Open "outGetters.txt" For Output As #fFile
    Print #fFile, res
    Close #fFile
    End Sub

    关于vba - 将所有命名范围提取到一个类中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30988364/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com