programing

전체 어레이를 VBA에서 루프하지 않고 붙여넣는 방법은 무엇입니까?

goodcopy 2023. 9. 5. 21:39
반응형

전체 어레이를 VBA에서 루프하지 않고 붙여넣는 방법은 무엇입니까?

배열을 채울 이 코드가 있습니다.

Sub rangearray()

    Dim arr() As Variant
    Dim Rng As Range
    Dim myCell As Range
    Dim i As Integer

    Set Rng = ActiveSheet.Range("G10:G14")

    For Each myCell In Rng
        ReDim Preserve arr(i)
        arr(i) = myCell
        i = i + 1
    Next myCell

    ActiveSheet.Range("H10:H14") = arr()

End Sub

여기서 시계 창의 값이 로드된 값임을 확인할 수 있습니다.

enter image description here

단, 배열을 워크북에 다시 추가하면 배열의 첫 번째 요소만 붙여넣습니다.

enter image description here

배열을 반복하지 않고 전체 배열을 워크시트에 붙여넣을 수 있습니까?

Sorceri에서 링크를 보고 사용할 코드로 수정했습니다.함수를 전환하여 수정된 코드를 다음과 같이 표시합니다.

Sub rangearray()

    Dim arr() As Variant
    Dim Rng As Range
    Dim myCell As Range
    Dim i As Integer

    Set Rng = ActiveSheet.Range("A1:A5")

    For Each myCell In Rng
        ReDim Preserve arr(i)
        arr(i) = myCell
        i = i + 1
    Next myCell

    ActiveSheet.Range("B1:B5") = WorksheetFunction.Transpose(arr)

End Sub

위의 설명에서 언급했듯이, 수행하려는 작업을 수행하기 위해 어레이가 필요하지는 않지만 어레이 솔루션만 원한다면 어레이를 루프로 채우는 먼 길을 갈 필요가 없습니다.범위 값을 배열에 직접 할당합니다.그것은 당신이 바꿀 필요가 없는 2D 배열을 만들 것입니다.

Sub rangearray()
    Dim arr
    Dim Rng As Range

    With ActiveSheet
        Set Rng = ActiveSheet.Range("G10:G14")

        arr = Rng.Value

        .Range("H10").Resize(UBound(arr, 1)).Value = arr
    End With
End Sub

워크시트 전치 함수를 사용할 수 있습니다.

아래를 참조하십시오.범위 값에 할당해야 합니다.

Sub rangearray()

Dim arr() As Variant
Dim Rng As Range
Dim myCell As Range
Dim i As Integer

Set Rng = ActiveSheet.Range("A1:A5")

For Each myCell In Rng
    ReDim Preserve arr(i)
    arr(i) = myCell
    i = i + 1
Next myCell

ActiveSheet.Range("B1:B5").Value = WorksheetFunction.Transpose(arr)

End Sub

방금 Rng에게 arr을 할당하고 시트에 다시 넣었습니다.Excel 2016에서 작동합니다.

Sub rangearray()

    Dim arr() As Variant
    Dim Rng As Range
    Dim myCell As Range
    Dim i As Integer

    Set Rng = ActiveSheet.Range("A1:A5")

    arr = Rng

    ActiveSheet.Range("B1:B5").Resize(5) = arr

End Sub

언급URL : https://stackoverflow.com/questions/19300555/how-to-paste-a-whole-array-without-looping-through-it-in-vba

반응형