复制空动态范围时出错

时间:2018-05-22 16:33:50

标签: excel vba excel-vba

我正在编写一个代码来一个接一个地复制动态范围中的值。如果其中一个动态范围为空,则此代码将失败。有办法解决这个问题吗?

Dim r1, r2, r3 As Integer

Range("Abandoned").Copy
Range("C110").PasteSpecial xlPasteValues

r1 = Range("Abandoned").Cells.Count

Range("Prod75").Copy
Range("C" & 110 + r1).PasteSpecial xlPasteValues

r2 = r1 + Range("Prod75").Cells.Count

Range("Prod5075").Copy
Range("C" & 110 + r2).PasteSpecial xlPasteValues

r3 = r2 + Range("Prod5075").Cells.Count

Range("Prod2550").Copy
Range("C" & 110 + r3).PasteSpecial xlPasteValues

1 个答案:

答案 0 :(得分:0)

将命名范围放在数组中。

如果数组是Nothing,则循环测试每个数组。

然后将值直接分配给第一个为空的单元格。

Dim nameArr()
nameArr = Array("Abandoned", "Prod75", "Prod5075", "Prod2550")
With Worksheets("Sheet1") 'Change to your output sheet

    Dim i As Long
    For i = LBound(nameArr) To UBound(nameArr)
        If Not Range(nameArr(i)) Is Nothing Then
            .Cells(.Rows.Count, 3).End(xlUp).Offset(1).Resize(Range(nameArr(i)).Rows, Range(nameArr(i)).coloumns).Value = Range(nameArr(i)).Value
        End If
    Next i
End With