【问题标题】:VBA: looping through a list of named ranges and pasting them to another sheet based on an address referenceVBA:循环遍历命名范围列表并根据地址引用将它们粘贴到另一个工作表
【发布时间】:2013-02-04 23:26:12
【问题描述】:

我正在编写一些 VBA 代码来帮助我执行以下操作:

粘贴所有命名范围的列表 循环遍历列表并根据列表复制/选择范围 每个选择都将粘贴到另一张纸上,给定一个地址引用,该地址与该地址有一定的偏移量

我对 VBA 很陌生,所以我整理了一些我认为可以解决问题的代码,但我遇到了运行时错误。有人可以帮我排除故障或提供建议吗?

我的代码在这里:

Sub RangeLoop()

Sheets("RANGEMATCH").Select
Range("A1").ListNames

Dim columnrange As Range
Dim m As Long
Dim address As Range

Set columnrange = Sheets("RANGEMATCH").Range("A:A").SpecialCells(xlConstants)

With columnrange
    For m = 1 To columnrange.Areas.Count
        Set address = Sheets("RANGEMATCH").Range(.Areas(m).Cells(1, 7).Value)
        Range(m).Copy Sheets("ETIE").Range(address.Offset(1, 10))
    Next
End With

End Sub

这是我正在使用的示例工作簿:

https://docs.google.com/spreadsheet/ccc?key=0AodOP_8DnJnFdHJoQ0xBM3JUUGJxT3EyRXN0T2ltUmc&usp=sharing

欢迎提出任何建议。

【问题讨论】:

  • 您可能会从这两个提示中受益:使用Option Explicitsee TLiebe's answeravoid using Select — 包括避免使用Activate
  • 另外,您可能想告诉我们错误是什么,以及它在哪一行。
  • 错误出现在这一行: Range(m).Copy Sheets("ETIE").Range(address.Offset(1, 10))

标签: loops excel range named vba


【解决方案1】:

Range() 函数需要一个字符串变量。范围名称或单元格引用,如“A1”

Range(m).Copy Sheets("ETIE").Range(address.Offset(1, 10))

m 是一个数字,所以它不起作用。您需要引用要复制的内容。我认为这可能只是您在之前的行中设置的 address 对象:

address.Copy Sheets("ETIE").Range(address.Offset(1, 10))

【讨论】:

  • 感谢您的回复。这个建议很好,但在这里对我没有帮助。地址变量是我要粘贴范围的目的地...地址设置为其中包含多个单元格坐标的列。 Range(m) 是我试图识别/拉入我创建的命名范围的方式。我基本上有 2 个列表,一个带有命名范围,右侧的几个单元格是应粘贴这些范围的目标地址列表。我希望这个循环遍历列表一(带有范围)并将它们拉入,同时遍历第二个列表(地址)并使用它们
  • 关于如何将所需信息提取到代码中,是否有人有任何其他建议?我所需要的只是如何引用一个单元格值作为命名范围的名称,然后使用另一个单元格值作为另一个工作表上粘贴该范围的地址。会有很大的帮助。谢谢!
  • 范围的大小是否超过一个单元格?如果没有,你可以使用Sheets("Destination").Range(Sheets("Original").Range("theAddress")) = Sheets("Original").Range("theValue")
  • 感谢您的建议。范围远大于一个单元格。我在帖子顶部的链接中发布了一个示例电子表格,因此您可以查看我正在处理的内容。
猜你喜欢
  • 1970-01-01
  • 2017-08-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-23
相关资源
最近更新 更多