サイトアイコン エントレ|演劇動画ニュース

エクセルマクロ(EXCEL VBA) その15 行や列の挿入と削除(Insert Delete)

エクセルマクロ(EXCEL VBA)

行(Row)の挿入

前回使ったこの整理シートの、帝劇と本多劇場の間に、マクロで新国立劇場のデータを入れたいとします。

まずは行(Row)を挿入しましょう。

帝劇と本多の間、つまり4行目に空行を入れれば良さそうです。

開発→Visual Basic
挿入→標準モジュールを出してから

Sub gyoire()
Rows(4).Insert
End Sub

と打ち込んでください。

これを実行すると

見事、4行目に空行を挿入できました。
本多劇場の行も消えてたりしないですね。

行(Row)の削除

この表のオーブの行を消したいとします。
行を削除するには、Deleteを使います。

Sub gyoire()
Rows(4).Insert
Rows(2).Delete
End Sub

さっき、空行を追加していましたが、一度その空行を削除してから、これを実行してください。
そうしないと、ヘンなことになります。

最初のデータに戻してから実行すると、

帝劇と本多の間、つまり4行目に空行を入れて、
オーブのある2行目を消す。

というマクロが実行されたわけですね。

列(Column)の挿入

続いて、「場所」と「キャパ」の間に列を挿入してみましょう。
列はColumnと言いまして、これを3列目に、Insertするので

Sub gyoire()
Rows(4).Insert
Rows(2).Delete
Columns(3).Insert
End Sub

としてみましょう。
ややこしいので、一旦、行を挿入と削除の命令はやめておきます。
一旦やめておくときは、
行の最初に ’ を入れるとその行の命令だけマクロは無視してくれます。
これをコメントアウトと言います。

これを実行すると

3列目(C列)に空の列を挿入することができました。

列(Column)の削除

ということは、「劇場」のある1列目を削除するには、

Columns(1).Delete

とすれば良さそうですね。

これを実行すると

3列目に空行を挿入して、
1列目を削除。
という命令が実行できました。

複数の行(Row)の挿入

ちなみに、複数の行を挿入したい場合もあると思います。

最初のこの状態から、

4行目から6行目まで空行を入れたいとした場合には、

Rows("4:6").Insert

と、コロンでつないで書くと実現できます。
ダブルクォーテーションではさんでいることに注意してください。

これを実行すると、

4行目から6行目に空行を入れることができました。

 
なお、マクロで行った削除に関しては、Ctrl+Zなどで戻ることができません。
とても危険ですので、大事なデータを扱う時には、必ずバックアップしてから試してください。
さらに、その14でやったように、シートをコピーしてから、元データは非破壊で行うのがおすすめです。

 
今回の最終的なコード

Sub gyoire()
Rows(4).Insert
Rows(2).Delete

Columns(3).Insert
Columns(1).Delete

Rows("4:6").Insert
End Sub

宿題-15

一番最初の表の、帝国劇場と本多劇場の間に、一行挿入して、
新国立劇場中劇場、初台、1010
とそれぞれの列に入れてください。

▼ クリックで解説を表示

解説

まずは、安全のためにシートをコピーしておきましょう。
現在のシート(ActiveSheet)をコピーして、一つ後ろに配置します。

ActiveSheet.Copy after:=ActiveSheet

次に、4行目に空白行を追加したいので、

Rows(4).insert

と続けます。これを実行すると

4行目が空けられました。
後は、A4、B4、C4に、それぞれ 新国立劇場中劇場、初台、1010を入れれば完成です。

Cells(4, 1) = "新国立劇場中劇場"
Cells(4, 2) = "初台"
Cells(4, 3) = "1010"

 
最終的なコードはこちらです。

Sub gyo_tsuika()
ActiveSheet.Copy after:=ActiveSheet
Rows(4).Insert

Cells(4, 1) = "新国立劇場中劇場"
Cells(4, 2) = "初台"
Cells(4, 3) = "1010"
End Sub

答えファイルのダウンロード

エクセルマクロ(EXCEL VBA) その16 表を整理してメアドリストを作る

(文:森脇孝/エントレ)

モバイルバージョンを終了