- ベストアンサー
エクセルVBAコピーしたセルを順番に張り付ける方法
- 質問者は、VBAを使ってエクセルのセルをコピーし、別のシートに張り付ける方法について質問しています。
- 質問者は、for文を使用した処理方法が分からないため、助けを求めています。具体的には、A列からB列にテキストがある場合に、B列のセルが入力されている行全体を別のシートにコピーして貼り付けたいと考えています。
- 質問者は、コピーの部分まではうまく実装できたが、貼り付ける際に行が上書きされてしまう問題が発生していると述べています。また、すでに貼り付けられた行がある場合は、その下に新たに行を追加して貼り付ける方法を知りたいとしています。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
>B列のセルに文字が有れば >その行全体をコピーして >【貼り付け】シートに張り付けたいのですが 参考に Sub test() Dim i As Long Dim io As Integer For io = 2 To Worksheets.Count For i = 1 To 100 With Worksheets("貼り付け") If Worksheets(io).Cells(i, "B").Value <> "" Then Worksheets(io).Rows(i).Copy .Rows(.Cells(Rows.Count, "B").End(xlUp).Row + 1) End If End With Next Next End Sub
その他の回答 (1)
- SI299792
- ベストアンサー率47% (774/1620)
説明とプログラムが違っているのですが。 プログラムでは、B列を参照していません。 説明を信じてB列に文字がある場合のみ行コピーをするなら Option Explicit ' Sub Macro1() Dim Sheet As Integer Dim I As Worksheet Dim RInp As Long Dim ROut As Long ' Sheets(1).Select Cells.ClearContents Application.ScreenUpdating = False ' For Sheet = 2 To Sheets.Count Set I = Sheets(Sheet) ' For RInp = 1 To I.Cells(Rows.Count, "B").End(xlUp).Row If I.Cells(RInp, "B") > "" Then ROut = ROut + 1 Rows(ROut) = I.Rows(RInp).Value End If Next RInp, Sheet End Sub オートフィルターで絞って1度にコピーする方法もありますが、1行目からなので今回は使っていません。 違っていたら補足に書いて下さい。