【问题标题】:How to convert my VBA named-range to looping code如何将我的 VBA 命名范围转换为循环代码
【发布时间】:2019-11-09 18:46:05
【问题描述】:

在下面的 VBA 代码示例中,我手动创建了 3 个命名范围,其中 ReportID_0XX 从 ...01 逐渐增加到 ...03, 并且还将比较报告单元格引用从 $A$6 增加到 $A$8

这在较小的范围内很好,但现在我需要对 60 个实例执行此操作,有效地继续该过程 57 次,以便为“ReportID_001”到“ReportID_060”创建命名范围(添加保留适用的前导零)并拥有单元格引用从 $A$6 开始,到 $A$65 结束。

我对使用 VBA 命名范围非常陌生。

''''''''''''''''''''''''''''''''''''''''''' '''''''''''''''''''

ActiveWorkbook.Names.Add Name:="ReportID_001", RefersTo:= _
"='ComparisonReport'!$A$6"
ActiveWorkbook.Names("ReportID_001").Comment = ""

'''''''''''''''''''''''''''''''''''

ActiveWorkbook.Names.Add Name:="ReportID_002", RefersTo:= _
"='ComparisonReport'!$A$7"
ActiveWorkbook.Names("ReportID_002").Comment = ""

'''''''''''''''''''''''''''''''''''

ActiveWorkbook.Names.Add Name:="ReportID_003", RefersTo:= _
"='ComparisonReport'!$A$8"
ActiveWorkbook.Names("ReportID_003").Comment = ""

【问题讨论】:

  • 创建一个包含您感兴趣的所有单元格的 Range 对象,遍历这些单元格并为它们分配一个命名范围。保留一个指定的变量来跟踪一个计数器以包含在您的命名范围名称中......但是为什么要命名单个单元格的范围?我几乎看不到 =)

标签: excel vba for-loop named-ranges


【解决方案1】:
Sub Test()
   Dim xBk As Workbook, xRng As Range, xCel As Range, xCtr As Long, xRep As String

   Set xBk = ActiveWorkbook
   Set xRng = Range("A6:A66")  ' or whatever range you want
   For Each xCel In xRng.Cells
      xCtr = xCtr + 1
      xRep = "ReportID_" & Format(xCtr, "000")   ' Make it "0000" if > 99 Reports
      xBk.Names.Add Name:=xRep, RefersTo:="='ComparisonReport'!$A$" & (xCtr + 5)
      xBk.Names(xRep).Comment = ""
   Next xCel
End Sub

【讨论】:

  • @Dion 很高兴它有帮助
猜你喜欢
  • 1970-01-01
  • 2021-10-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-08
  • 2015-02-26
  • 1970-01-01
相关资源
最近更新 更多