1枚のシートから2枚目の最後の行に単純なテーブルをコピーしようとしました。 元々、両方のシートが異なる構造をしているので、配列を試しました(列は同じ順序ではないので、貼り付けてもできませんでした)。しかし、私はいつもエラー1004を受け取ります。 今、両方のテーブルが同じ構造になっていて、今は単純に&のペーストをコピーすることができますが、私はまだ同じエラーが発生しています。 これはこれまで私が持っていたものです。私はそれが非常に簡単なことだと知っていますが、私はどこが間違っているのか分かりません。範囲に[VBA]を貼り付ける方法 - エラー1004
Sub testy()
Dim rowsIn, rowsOut As Long
With Worksheets("Sheet1")
rowsIn = .Cells.SpecialCells(xlLastCell).Row
.Range(.Cells(4, 1), .Cells(rowsIn, 3)).Copy
End With
With Worksheets("Sheet2")
rowsOut = .Cells.SpecialCells(xlLastCell).Row
.Range(.Cells(rowsOut + 1, 3)).PasteSpecial xlPasteValues
End With
End Sub
EDIT:ティム・ウィリアムズの提案どおりに解決しました。しかし、私はもともと意図したように、これを配列でどうやって行うことができるのか不思議です。 Sheet1のデータにSheet2とは異なる順序の列があると仮定して、一時的な配列を使用して列を並べて貼り付けることができました。私は配列をうまく埋めることができましたが、配列の内容をSheet2に取得する方法を理解することはできません。配列を(ひどく非効率的に)配置するために使用したコードを追加しました。
Sub testy2ElectricBoogaloo()
Dim arr() As Variant
Dim rowsIn, rowsOut, i As Long
With Worksheets("Sheet1")
rowsIn = .Cells.SpecialCells(xlLastCell).Row
ReDim arr(1 To rowsIn - 3, 1 To 5)
'Array populated with a loop because columns are not in the same order, don't know if this is the most efficient method
For i = 1 To UBound(arr)
arr(i, 1) = "Constant1" 'data collected from other source
arr(i, 2) = "Constant2" 'data collected from other source
arr(i, 3) = .Cells(i + 3, 2).Value
arr(i, 4) = .Cells(i + 3, 1).Value
arr(i, 5) = .Cells(i + 3, 3).Value
Next i
End With
End Sub
ありがとう、それは間違いなく私が必要としたものでした。速やかな返答をいただきありがとうございます - 私は今、基本的なことを知らないためにOfficeをアンインストールするように進めます。 –
あまり基本的ではありません;-) –
クローズドQで質問し続けると申し訳ありませんが、レンジではなく配列からデータを取得したい場合はどうしたらいいですか? –