13

配列にデータを入力するこのコードがあります

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

ここで、ウォッチ ウィンドウの値が読み込まれたものであることがわかります。

ここに画像の説明を入力

ただし、配列をワークブックに追加し直すと、配列の最初の要素のみが貼り付けられます。

ここに画像の説明を入力

配列をループすることなく、配列全体をワークシートに貼り付けることは可能ですか?

Sorceri からのリンクを見た後、.Transpose 関数を使用するようにコードを修正したので、修正したコードは次のようになります。

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
4

3 に答える 3

14

転置ワークシート関数http://msdn.microsoft.com/en-us/library/office/ff196261.aspxを使用する必要があります

下記参照。それを範囲の値に割り当てる必要があります

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
于 2013-10-10T15:54:44.893 に答える