• 締切済み

No.4、Excel2007で質問です

範囲C3~I10の各セルにABCのいずれかがデータとして適当に既に入ってます。 そして範囲C11~I11から次々と下へ向かってデータが行単位で追加されます。 とあることから範囲C3~I10を範囲N3~T10に上下逆さまにしコピーして挿入しました。 ここからが私のしたいことになります。 範囲(C11:I11)から下へ向かってデータが追加されるたびに、そのデータが1番上の範囲N3~T3にコピー挿入されて、それまでに入ってたデータ(N3:T3)が、データ(N4:T4)→(N5:T5)→…へと一行ずつ下へ行くようにずらしたいです。 マクロでお願いいたします。 画像を添付する

みんなの回答

  • mt2015
  • ベストアンサー率49% (258/524)
回答No.2

・「データの追加」なので、上のセルが空でない&下のセルが空を条件にしました ・データが削除された時も、上のセルが空でない&下のセルが空の時は空白を追加と判断します。 ・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

961awaawa
質問者

お礼

ありがとうございました。

  • watabe007
  • ベストアンサー率62% (476/760)
回答No.1

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

961awaawa
質問者

お礼

ありがとうございました。

関連するQ&A

専門家に質問してみよう