• ベストアンサー

エクセルで行を追加するマクロ

いつもお世話になります。 エクセルのマクロでこんなことは可能でしょうか。 (1)ある「不特定のセル」に値が入ったとき(そのセルの列は決まっています) (2)自動的にそのセルの「行」全体をコピーし (3)ひとつ下の行に「コピーしたセルの挿入」で行の追加をする 「不特定のセル」というところでつまづいています。 お詳しい方、ご教授宜しくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.1

こんにちは。 完全に、質問の意味を把握しているわけではありませんが、このようになるのかな?「不特定のセル」というのは、イベント・ドリブン型のマクロだと思います。 'シートモジュールに貼り付けてください。それ以外では動きません。 Private Sub Worksheet_Change(ByVal Target As Range)   With Target   If .Column <> 1 Then Exit Sub 'A列(1列目)以外は除外   If .Count > 1 Then Exit Sub    Application.ScreenUpdating = False    Application.EnableEvents = False    .EntireRow.Copy 'コピー    .Offset(1).EntireRow.Insert xlDown '1行下に挿入    .EntireRow.Cells(1, 1).PasteSpecial '1行下に貼り付け    .Select    Application.CutCopyMode = False    Application.EnableEvents = True    Application.ScreenUpdating = True   End With End Sub

misty_mr
質問者

お礼

>  If .Column <> 1 Then Exit Sub 'A列(1列目)以外は除外 を外したら、うまくいきました。 ありがとうございました。

misty_mr
質問者

補足

シートモジュールに貼り付けたのですがうまく動作しません。 きっと私の質問の仕方が悪いのですね、申し訳ございません。 たとえば、A1~G10までの表があって、そのうちG列は空欄です。 で、G列のセルのどこかにデータを入力すると、 データを入力した行が自動的にコピーされて1行下に行追加される、 という具合にしたいのです。 (1件入力すると表はA1~G11、2件入力すると表はA1~G12になります)

その他の回答 (1)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.2

マクロの記録で行挿入、コピー貼り付けをとり、Changeイベントに関連付けると Private Sub Worksheet_Change(ByVal Target As Range) Application.CutCopyMode = False Application.EnableEvents = False If Target.Column = 1 Then Target.EntireRow.Insert Application.CutCopyMode = True Target.EntireRow.Copy Target.Offset(-1, 0).Select ActiveSheet.Paste End If Application.EnableEvents = True Application.CutCopyMode = False End Sub となりました。ほぼ#1のご回答と同じになりましたが。 行(列)挿入や行(列)削除はよくテストしないと思わぬボロを出した経験があります。Changeといいながら、コピー貼り付けや、範囲指定のDELETEやクリアをされるのも怖い。 私のはダメな例かもしれないので、色々なケースを十分テストしてみてください。

関連するQ&A

専門家に質問してみよう