Excel VBA将范围放入数组

时间:2018-06-22 07:23:14

标签: excel vba excel-vba

我正在尝试将范围放入数组,以便可以循环它们。由于有很多具有相同范围的纸张。但是excel在分配值时返回错误“对象变量或未设置块变量”。带有(“ **”)的那个。如何解决该错误并使它正常工作?

Dim TableOldData(0 To 6) As Range

**TableOldData(0) = Range("F6:P8")**
TableOldData(1) = Range("F30:P32")
TableOldData(2) = Range("F54:P56")
TableOldData(3) = Range("F78:P80")
TableOldData(4) = Range("F102:P104")
TableOldData(5) = Range("F126:P128")
TableOldData(6) = Range("F150:P152")

Dim ColumnClear(0 To 6) As Range

ColumnClear(0) = Range("P6:P8")
ColumnClear(1) = Range("P30:P32")
ColumnClear(2) = Range("P54:P56")
ColumnClear(3) = Range("P78:P80")
ColumnClear(4) = Range("P102:P104")
ColumnClear(5) = Range("P126:P128")
ColumnClear(6) = Range("P150:P152")

Dim NewValue(0 To 6) As Range

NewValue(0) = Range("B6:B8")
NewValue(1) = Range("B30:B32")
NewValue(2) = Range("B54:B56")
NewValue(3) = Range("B78:B80")
NewValue(4) = Range("B102:B104")
NewValue(5) = Range("B126:B128")
NewValue(6) = Range("B150:B152")

Dim i As Integer
i = 0
Dim RowPaste As Integer
RowPaste = 6
While i <> 6

    TableOldData(i).Select
    Selection.Copy
    Cells(RowPaste, 5).Select
    ActiveSheet.PasteSpecial Format:=3, Link:=1, DisplayAsIcon:=False, _
    IconFileName:=False
    ColumnClear(i).Select
    Selection.ClearContents

    NewValue(i).Select
    Selection.Copy
    Cells(RowPaste, 16).Select
    ActiveSheet.PasteSpecial Format:=3, Link:=1, DisplayAsIcon:=False, _
    IconFileName:=False

    i = i + 1
    RowPaste = RowPaste + 24


Wend

1 个答案:

答案 0 :(得分:0)

执行此操作:

Dim Buf() As Variant   ' only Variant type is accepted
Buf = Range("F5:H10")

此方法导致3x6数组。这样,您将数据放入可以循环的数组中。 还有另一种管理范围引用的方法,它比较复杂:

Dim rData as Range, r as Range
Set rData = Range("F5:H10")
For Each r In rData
    Debug.Print r.Value
Next r

数据从左到右然后按降序排列。