【问题标题】:Create dynamic range and store named ranges创建动态范围并存储命名范围
【发布时间】:2017-10-06 13:37:21
【问题描述】:

我在工作表(“模型”)中生成范围 A。我将这些值移动到 Worksheet("Data"),以便我可以开始存储所有这些数据。我将有另一个选项卡(“SheetC”)显示存储数据中用户选择的两个范围。例如,第 1 天的范围 A 和第 2 天的范围 A。 在移动数据以存储在“数据”中的过程中,我想将其直接放在最后一个下方。我有一个在“SheetC”中引用的计数器,每次将新数据放入工作表 (i) 时都会增加。

理想情况下,我希望“数据”中的每个范围 A 都被命名为不同的范围,因此当用户选择某个范围时,我可以通过调用它来简单地显示该范围,而不必在存储的数据和使用偏移量。

Dim rngData_Total_a As Range
Dim rngData_Total_b As Range
Dim i As integer

i = Sheets("SheetC").Range("AJ3").Value
Set rngData_Total_a = Sheets("Model").Range("R14:BH270")
Set rngData_Total_b = Sheets("Data").Range(Cells(3 + 270 * i, 3), Cells(3 + 257 * (i + 1), 3))

rngData_Total_b.Value = rngData_Total_a.Value

我不断收到应用程序/对象定义的错误。可以简单地设置一个范围吗?或者有没有更有效的方法来做到这一点?理想情况下,我还想要一个动态范围名称,以便 rngData_Total_b 随每个新范围更改其名称。基本上,考虑到我不知道我将在那里存储的范围数量,该过程将复制我在“数据”中预先定义 x 个范围为不同名称和不同位置的范围。

谢谢

安东尼

【问题讨论】:

  • 您需要将范围内的 Cells() 限定为同一个父工作表Sheets("Data").Range(Sheets("Data").Cells(...
  • 谢谢!那成功了。有没有办法将范围重命名为与 rngData_Total_b 不同的范围,一旦将其放置在“数据”选项卡中?类似于: Dim "rngData_Total_" & i as Range 而不是 "b" 的固定名称?

标签: vba excel syntax named-ranges


【解决方案1】:

尝试测试

Sub test()
Dim rngData_Total_a As Range
Dim rngData_Total_b As Range
Dim i As Integer
Dim rngT As Range

i = Sheets("SheetC").Range("AJ3").Value
Set rngData_Total_a = Sheets("Model").Range("R14:BH270")
With Sheets("Model")
    Set rngT = .Range("c" & Rows.Count).End(xlUp)(2)
    Set rngDaata_total_b = rngT.Resize(257, 43)
End With
'Set rngData_Total_b = Sheets("Data").Range(Cells(3 + 270 * i, 3), Cells(3 + 257 * (i + 1), 3))

rngData_Total_b.Value = rngData_Total_a.Value
End Sub

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-10
    • 1970-01-01
    • 1970-01-01
    • 2018-07-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多