PR

【ExcelVBA】行・列の操作まとめ(挿入Insert・削除Delete・非表示Hidden)☆複数範囲対応

行・列の操作

エクセルVBAを使ってシートの行や列を操作する方法についてまとめています。
よく使う行・列の挿入、削除、非表示・再表示の書き方を説明していますので、見出しをクリックしてご覧ください。

スポンサーリンク

行の削除(Rows().Delete)

行の削除はRowsプロパティのDeleteメソッドを実行します。
1行のみ削除する場合はRowsのカッコ内に行数を指定します。

'3行目を削除
Rows(3).Delete

▽マクロ実行前→実行後のイメージ
 3行目のパンの行が削除されました。

エクセルVBAで行を削除する方法(1行)

複数行を削除する場合はカッコ内で何行目~何行目まで削除するのかを指定します。

'3行目~5行目を削除
Rows("3:5").Delete

▽マクロ実行前→実行後のイメージ
 3行目~5行目の行が削除されました。

エクセルVBAで行を削除する方法(複数行)

実務では「ヘッダーだけ残して2行目~最終行までを毎回削除する」などをよく使用します。
その場合は最終行を変数に取得して、2行目~最終行までを削除するように指定します。

'2行目~最終行までを削除
Dim LastRow As Integer

'最終行を変数に取得
LastRow = Cells(Rows.Count, 1).End(xlUp).Row

'2行目~最終行までを削除
Rows("2:" & LastRow).Delete

▽マクロ実行前→実行後のイメージ
 ヘッダーだけが残って2行目~最終行の13行目までが削除されました。

エクセルVBAで行を削除する方法(2行目~最終行まで)
スポンサーリンク

列の削除(Columns().Delete)

列の削除はColumnsプロパティのDeleteメソッドを実行します。

列を操作する場合はA列・B列…とアルファベットで指定する方法と、1列目・2列目…と列数で指定する方法があります。

アルファベットで指定する場合はカッコ内にアルファベットを””で囲んで指定します。

'B列の削除(アルファベットで指定)
Columns("B").Delete

数字で何列目かを指定する場合はカッコ内に数字を記述します。

'2列目の削除(数字で指定)
Columns(2).Delete

▽マクロ実行前→実行後のイメージ
 B列(2列目)が削除されました。(どちらも結果は同じです。)

エクセルVBAで列を削除する方法(1列)

次は列の範囲を指定する方法です。

アルファベットで指定する場合はカッコ内に””で囲んでB~C列の場合は「”B:C”」のように指定します。

'B列~C列の削除(アルファベットで指定)
Columns("B:C").Delete

数字で指定する方法は1列だけ削除するときとちょっと書き方が変わるので注意です。

1列だけのときは「Columns(2)」の書き方で指定していましたが、複数列の場合は「Columns(“2:3”)」では指定できません。複数行のときは「Rows(“2:3”)」でできていたのにちょっと不思議ですよね。

複数列の場合はRangeで囲んで、その中でColumns()をカンマで区切って開始列と終了列を指定します。

'2列目~3列目の削除(数字で指定)
Range(Columns(2), Columns(3)).Delete

▽マクロ実行前→実行後のイメージ
 B列~C列(2列目~3列目)までが削除されました。

エクセルVBAで列を削除する方法(複数列)

次は2列目~最終列までを削除したい場合の書き方です。

最終行のときと同じように先に最終列を調べて変数に格納してから列数を指定しています。

'2列目~最終列の削除
Dim LastCol As Integer

'最終列を変数に取得
LastCol = Cells(1, Columns.Count).End(xlToLeft).Column

'B列(2列目)~最終列の削除
Range(Columns(2), Columns(LastCol)).Delete

▽マクロ実行前→実行後のイメージ
 2列目のB列~最終列のC列までが削除されました。

エクセルVBAで列を削除する方法(2列目~最終列まで)
スポンサーリンク

行の挿入(Rows().Insert)

行の挿入はRowsプロパティのInsertメソッドを実行します。

行の指定方法は削除の時と同じでカッコ内に行数を入れて指定します。

'3行目に1行挿入
Rows(3).Insert

▽マクロ実行前→実行後のイメージ
 3行目に行が追加されました。

エクセルVBAで行を挿入する方法(1行)

複数列を挿入したい場合は開始行~終了行を指定します。
Rowsのカッコ内に””で囲んで「:」でつなげて書きます。

'3行目~5行目に行の挿入
Rows("3:5").Insert

▽マクロ実行前→実行後のイメージ
 3行目~5行目に3行分、行が追加されました。

エクセルVBAで行を挿入する方法(複数行)
スポンサーリンク

列の挿入(Columns().Insert)

列の挿入はColumnsプロパティのInsertメソッドを実行します。

削除の時と同様に、列の操作はアルファベットで指定する方法と列数の数字で指定する方法があります。

'B列に1列挿入(アルファベットで指定)
Columns("B").Insert
'2列目に1列挿入
Columns(2).Insert

▽マクロ実行前→実行後のイメージ
 どちらも結果は同じですがB列(2列目)に1列挿入されました。

エクセルVBAで列を挿入する方法(1列)

次は複数列挿入する方法です。

アルファベットで指定する場合はカッコ内に”B:C”のように範囲を指定します。

'B列~C列に列を挿入(アルファベットで指定)
Columns("B:C").Insert

列数の数字で指定する場合はRangeで囲んでからColumns()をカンマで区切って指定します。

'2列目~3列目に列を挿入(数字で指定)
Range(Columns(2), Columns(3)).Insert

▽マクロ実行前→実行後のイメージ
 B列~C列(2列目~3列目)に2列分挿入されました。

エクセルVBAで列を挿入する方法(複数列)
スポンサーリンク

行の非表示・再表示(Rows().Hidden)

さいごは行の非表示・再表示の書き方です。

行の非表示・再表示はRowsプロパティのHiddenプロパティを使用します。

非表示にする場合はHiddenプロパティに「True」を指定します。(再表示は「False」にします。)
ちなみにHiddenの意味は「隠れた」という意味だそうです。なので隠す場合はTrueなんですね。

'行の非表示
Rows(3).Hidden = True

▽マクロ実行前→実行後のイメージ
 3行目が非表示になり、2行目の次が4行目になっていることが分かります。

エクセルVBAで行を非表示にする方法(1行)

複数行の非表示はRowsプロパティのカッコ内に開始行:終了行を指定します。

'3行目~5行目を非表示にする
Rows("3:5").Hidden = True

▽マクロ実行前→実行後のイメージ
 3行目~5行目までの3行が非表示になりました。

エクセルVBAで行を非表示にする方法(複数行)
スポンサーリンク

列の非表示・再表示(Columns().Hidden)

列の非表示・再表示はColumnsプロパティのHiddenプロパティを使用します。

非表示にする場合はHiddenプロパティに「True」を指定します。(再表示は「False」にします。)

'B列を非表示にする(アルファベットで指定)
Columns("B").Hidden = True
'2列目を非表示にする(数字で指定)
Columns(2).Hidden = True

▽マクロ実行前→実行後のイメージ
 B列(2列目)が非表示になりました。

エクセルVBAで列を非表示にする方法(1行)

複数列の範囲を非表示にする方法です。
削除や挿入のときと同じくアルファベットで指定する方法か、数字で指定する方法で範囲を指定します。

'B列~C列の非表示(アルファベットで指定)
Columns("B:C").Hidden = True
'2列目3列目の非表示(数字で指定)
Range(Columns(2), Columns(3)).Hidden = True

▽マクロ実行前→実行後のイメージ
 B列~C列(2列目~3列目)が非表示になりました。

エクセルVBAで列を非表示にする方法(複数列)

おつかれさまでした~。

よく使う行・列の操作についてまとめてみました。
覚えてしまえば簡単なコードですが、複数列の指定方法などちょっとクセのあるものもあるので私も毎回アレ、どう書くんだっけ…となりがちです。

他にもエクセルVBAでよく使うものを中心に記事を書いていきますのでよかったらご覧ください。

スポンサーリンク

※コードのコピー利用について

・コードのコピーは自由におこなっていただけます。
・気を付けて作成はしていますがコードには誤りがある可能性があります。
・自身の環境で動作確認をしていますが、すべての方の環境で同様に動くことは保証できません。
・データの破損等の責任は負いかねますのでご自身の責任のもとお使いください。

タイトルとURLをコピーしました