|
|
| Excel VBA Macro ・ コピー ・ FAQ |
|
複数シートのデータをSheet1へコピーするには?
|
|
|
|
Question 72.9 |
Excel VBA Borad (掲示板)より |
 |
 |
|
|
お世話になっております。 シート2〜34のデータをシート1にコピーしようと思っています。
データシートは、データの入っているところを探してそこから1行下までをコピー。
ペースト側は、データの入っているところから2行下を起点にして貼り付ける。
という内容です。
恐らく、シート1の最終行の探したセルの指定の仕方が怒られるのだと思うのですが、last2と定義したオブジェクト型は下記のようなコードでは使用不可なのでしょうか。
不可だとすると、どんどんコピーされているシート1の最終行を指定する方法を、教えていただけませんでしょうか。
よろしくお願いします。
Option Explicit
Dim n As Integer
Dim last As Range
Dim last2 As Range
Sub 合体()
Set last = Range("AP65536").End(xlUp).Offset(1)
Set last2 = Range("A65536").End(xlUp).Offset(2)
For n = 2 To 34
Sheets(n).Range("A4", last).Copy Destination:=Sheets(1).Range(last2)
Next n
End Sub
|
|
|
こんな感じで良いでしょうか? 違ってたらスイマセン
Sub Sumple()
Dim n As Integer
Dim LastR1 As Long, LastR2 As Long
For n = 2 To 34 'データシートの数だけループ
LastR1 = Sheets(1).Range("A65536").End(xlUp).Row '貼付先シートの最終行取得
LastR2 = Sheets(n).Range("A65536").End(xlUp).Row '貼付元シートの最終行取得
With Sheets(n) '貼付元データをコピー(最終行の1行下まで)
.Range(.Cells(4, 1), .Cells(LastR2 + 1, 42)).Copy
End With
ActiveSheet.Paste Destination:=Sheets(1).Cells(LastR1 + 2, 1) '貼付(2行下を起点)
Next
End Sub
|
|
|
よっしーさん!!!
一瞬に処理が終わり、マクロが働いていないのではないか? と思うほどの早業でした。 ありがとうございます。
宣言がオブジェクトではなく Longなんですね。
その後の点もじっくり見ましたが、行全体を選択すると良いわけですね〜。 Rangeにこだわりすぎていたようです。
ありがとうございました!
|
|
|
|
|