簡體   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