- ベストアンサー
エクセルで行を追加するマクロ
いつもお世話になります。 エクセルのマクロでこんなことは可能でしょうか。 (1)ある「不特定のセル」に値が入ったとき(そのセルの列は決まっています) (2)自動的にそのセルの「行」全体をコピーし (3)ひとつ下の行に「コピーしたセルの挿入」で行の追加をする 「不特定のセル」というところでつまづいています。 お詳しい方、ご教授宜しくお願い致します。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。 完全に、質問の意味を把握しているわけではありませんが、このようになるのかな?「不特定のセル」というのは、イベント・ドリブン型のマクロだと思います。 'シートモジュールに貼り付けてください。それ以外では動きません。 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
その他の回答 (1)
- imogasi
- ベストアンサー率27% (4737/17069)
マクロの記録で行挿入、コピー貼り付けをとり、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やクリアをされるのも怖い。 私のはダメな例かもしれないので、色々なケースを十分テストしてみてください。
お礼
> If .Column <> 1 Then Exit Sub 'A列(1列目)以外は除外 を外したら、うまくいきました。 ありがとうございました。
補足
シートモジュールに貼り付けたのですがうまく動作しません。 きっと私の質問の仕方が悪いのですね、申し訳ございません。 たとえば、A1~G10までの表があって、そのうちG列は空欄です。 で、G列のセルのどこかにデータを入力すると、 データを入力した行が自動的にコピーされて1行下に行追加される、 という具合にしたいのです。 (1件入力すると表はA1~G11、2件入力すると表はA1~G12になります)