【エクセルVBA】ボタンをクリックしてシートに行を挿入する

その他

エクセルで行の挿入したいときは、タブの選択からは「ホームタブ ⇒ 挿入 ⇒ シートの行を挿入」マウス操作では「右クリック ⇒ 挿入 ⇒ 行全体 ⇒ OKボタンを押す」、ショートカットキーでは「Altキーを押して離し ⇒ I ⇒ R」など3つの方法がありますが、どれもスリーステップ以上の操作が必要で急いで表を修正したいとき意外と時間がかかってしまうことがあります。

そこで今回はシートにボタンを作成してプログラムを登録し、ワンクリックで行の挿入ができるようにしたいと思います。

VBEの標準モジュールにコードを貼り付けます

エクセルの「開発」タブ →「Visual Basic」でVBE(Visual Basic Editor)の画面を表示してVBEの「挿入」メニュー →「標準モジュール」で標準モジュールを作成し「Module1」に下の「シートの行を挿入」のコードをコピーして貼り付けます。

Sub シートの行を挿入()

ActiveCell.EntireRow.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromRightOrBelow

End Sub

ボタンを作成してマクロを登録をします

Excelのシート1を表示して「開発」タブ →「挿入」→「ボタン(フォームコントロール)」をクリックします。

ボタンを配置したい場所をマウスでドラッグします。

マクロの登録ダイアログボックスが表示されるので「シートの行を挿入」を選択して「OK」ボタンを押します。

ボタン1に「シートの行を挿入」のマクロが登録されました。

ボタンを押して「シートの行を挿入」プログラムを実行します

「ボタン1」の横に右のようなデータを作成します。

セルA3を選択して「ボタン1」をクリックすると3行目に「シートの行を挿入」が行われました。

シートの行を挿入のプログラムコードで「CopyOrigin:=xlFormatFromRightOrBelow」の部分は下の行(元々選択していた行)の書式を引き継いで行の挿入をするという意味です。

コードを「CopyOrigin:=xlFormatFromLeftOrAbove 」にすると新しい行の書式を上側のセル(行)から書式を引き継いで行の挿入をするようになるので、セルA3を選択したときは表題部(2行目)の書式を引き継ぐことになります。

今回は表の中の行の挿入なので 「CopyOrigin:=xlFormatFromRightOrBelow」のほうが良いと判断してこちらの方を使用しました。

Insert メソッドの書式(構文)Object.Insert(Shift, CopyOrigin)

Object:対象のセル範囲を指定します。
Shift:挿入によって既存のセルをどちらに移動させるかを指定します。
CopyOrigin:挿入された新しいセルの書式をどこからコピーするかを指定します。