繁体   English   中英

如何使用“for each”循环在 VBA 中创建多个范围?

[英]How can I create multiple ranges in VBA using 'for each' loop?

阅读此主题的人,这是我在 StackOverflow 上的第一个问题,如果我犯了任何错误,请原谅我,如果有人提供帮助,我将不胜感激。

我有一个表,它被声明为 ListObject。 为了从表的每一列插入和获取数据。 我只是将范围设置为:

Dim genTable As ListObject
Set genTable = test.ListObjects("hourly_data")
Set u1_NetLoad = genTable.ListColumns("U1 Net Load").DataBodyRange

我使用了以下代码并帮助我设置了范围,但它并不令我满意。 我想为我的编程知识学习更多动态方法。

For Each word In genTable.HeaderRowRange
    i = 1 + i
    test.Cells(22 + i, 2).value = "Set " & Replace(CStr(word), " ", "") & _
                                " = genTable.ListColumns(" & Chr(34) & word & Chr(34) & ").DataBodyRange"
Next
  • 此代码的 output 被复制到 VBA 模块以设置范围。

实际上,我的脚本工作得很好,但我只是想知道我是否可以更轻松地设置范围并取决于变量。 就我而言,我输入了每个范围。 我试过像这样的“for each”循环,但它没有用。

For Each word In genTable.HeaderRowRange

     range_name = Replace(CStr(word), " ", "") & "_"
     Set range_name = genTable.ListColumns(word).DataBodyRange

Next

上面的代码不起作用,有没有办法让它起作用? 谢谢阅读。

上周我有同样的问题,我做了一些挖掘并提出了这个问题。

首先,我定义数组,然后用数组的下限和上限重新定义。 然后使用循环,用所需的工作表和范围填充每个数组条目,注意我需要使用工作表编号,而不是名称,然后我可以填充整个数组,然后继续执行代码:

...
Dim Nbr_Students As Integer
Dim Counter As Integer
Dim i As Integer
Dim Student_Sheets As Variant

Nbr_Students = Sheets("Master Lists").Range("M3").Value - 1
Counter = 15
i = 0

ReDim RngArray(0 To Nbr_Students)
Do While i <= Nbr_Students
    Set RngArray(i) = Worksheets(Counter).Range("C141:C157")
    Counter = Counter + 1
    i = i + 1
Loop

...

原帖: 链接

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM