重复范围 N 次

Repeat range Nth times

我正在尝试设计一个代码,使我能够重复一个范围(一列)以重复 N 次。这是我的尝试(并且它正在运行),但如果可能的话,我需要你的想法来改进代码

Sub Test()
    Const N As Integer = 3
    Dim a, i As Long, ii As Long, k As Long
    a = ActiveSheet.Range("A1:A" & ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row).Value
    ReDim b(1 To UBound(a, 1) * N, 1 To 1)
    For i = 1 To N
        For ii = LBound(a, 1) To UBound(a, 1)
            k = k + 1
            b(k, 1) = a(ii, 1)
        Next ii
    Next i
    Range("C1").Resize(UBound(b, 1), UBound(b, 2)).Value = b
End Sub

我也会这样做...

Sub Test()
    Dim a, c&, i&, k&
    
    Const n& = 3
    
    a = [a1].Resize(Cells(Rows.Count, 1).End(xlUp).Row)
        ReDim b(1 To n * UBound(a), 1 To 1)
        
        For k = 1 To n
            For i = 1 To UBound(a)
                c = c + 1
                b(c, 1) = a(i, 1)
            Next
        Next
    [c1].Resize(UBound(b)) = b
    
End Sub

不过最好做成一个封装过程...

Sub Test()
    CloneRange [a1], [c1], 3
End Sub

Sub CloneRange(rSrc As Range, rDst As Range, Optional n& = 1)
    Dim a, c&, i&, k&        
    a = rSrc.Resize(Cells(Rows.Count, 1).End(xlUp).Row)
        ReDim b(1 To n * UBound(a), 1 To 1)
        For k = 1 To n
            For i = 1 To UBound(a)
                c = c + 1
                b(c, 1) = a(i, 1)
            Next
        Next
    rDst.Resize(UBound(b)) = b
End Sub