- 締切済み
No.4、Excel2007で質問です
範囲C3~I10の各セルにABCのいずれかがデータとして適当に既に入ってます。 そして範囲C11~I11から次々と下へ向かってデータが行単位で追加されます。 とあることから範囲C3~I10を範囲N3~T10に上下逆さまにしコピーして挿入しました。 ここからが私のしたいことになります。 範囲(C11:I11)から下へ向かってデータが追加されるたびに、そのデータが1番上の範囲N3~T3にコピー挿入されて、それまでに入ってたデータ(N3:T3)が、データ(N4:T4)→(N5:T5)→…へと一行ずつ下へ行くようにずらしたいです。 マクロでお願いいたします。 画像を添付する
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- mt2015
- ベストアンサー率49% (258/524)
・「データの追加」なので、上のセルが空でない&下のセルが空を条件にしました ・データが削除された時も、上のセルが空でない&下のセルが空の時は空白を追加と判断します。 ・Sheetモジュールに入れてください。 Private Sub Worksheet_Change(ByVal Target As Range) For Each r In Target '対象範囲か? If (r.Row > 10) * (r.Column >= 3) * (r.Column <= 9) Then 'データの追加か? If (r.Offset(-1, 0) <> "") * (r.Offset(1, 0) = "") Then 'セルを挿入して値を入れる Cells(3, r.Column + 11).Insert Shift:=xlDown Cells(3, r.Column + 11).Value = r.Value End If End If Next End Sub
- watabe007
- ベストアンサー率62% (476/760)
11行以下の最終行を Range("N3:T3") に挿入します。 Sub Test() Dim LastRow As Long LastRow = Cells(Rows.Count, "C").End(xlUp).Row 'C列の最終行が10以下だと終了 If LastRow <= 10 Then Exit Sub Cells(LastRow, "C").Resize(, 7).Copy Range("N3:T3").Insert Shift:=xlDown Application.CutCopyMode = False End Sub
お礼
ありがとうございました。
お礼
ありがとうございました。