空白行を削除する

EntireRow. Delete とDelete Shift:=xlUp
空白行を削除

マクロ講座21回の続きです。空白行を削除するマクロを作成したので、コードを確認後、そのマクロをボタンにします。

空白行を削除 マクロ講座21-2回

空白行を削除するマクロをボタンにする

前頁(マクロ講座21回)で空白行を削除するマクロを作成したので、コードを確認後、そのマクロをボタンにしましょう。
(サンプルファイルは、こちらから マクロ講座21回サンプルデータ

前ページで作成した「データのない不要な行を削除するマクロ」のコードを見てみましょう。

空白行を削除するマクロ~ EntireRow Delete

さあ、コードを見てみましょう。実際に操作する手間と比べたら、驚くほどシンプルですね。
記録したコードには
Columns("B:B").Select
が入っていましたが、汎用的に使うならば、不要なコードです。この部分はきっぱり、削除しましょう。
すると、 コードは、このようになります。Sub~End Subを除くと、たった2行です。マクロの名前を空白行削除に変更しました。
Sub 空白行削除()
    Selection.SpecialCells(xlCellTypeBlanks).Select ' 空白セルを選択
    Selection.EntireRow.Delete ' 行全体を削除
End Sub
その範囲を含む「行全体」を選択したので、EntireRowプロパティが使われています。 もし、範囲を含む列全体であれば、EntireColumnプロパティが使われます。
先に範囲を選択したのちEntireRow.Deleteの方を実行
Sub 空白行削除()
    Selection.SpecialCells(xlCellTypeBlanks).Select ' 空白セルを選択
    Selection.EntireRow.Delete ' 行全体を削除
End Sub
結果は下図のように隣のD列に入力していた数値が削除されて飛び飛びになっています。

空白セルを削除するマクロ~ .Delete Shift:=xlUp

先に範囲を選択したのちDelete Shift:=xlUpの方を実行。こちらは上方向にシフトします。汎用的に使うために
Columns("B:B").Select
の部分は取りました。
Sub 空白行を上詰め()
    Selection.SpecialCells(xlCellTypeBlanks).Select
    Selection.Delete Shift:=xlUp
End Sub

マクロをスリムに

記録のマクロは複数行になっていましたが、コードが重複している部分を削ると1行になってしまいます。
Sub 空白行削除()
    Selection.SpecialCells(xlCellTypeBlanks).EntireRow.Delete ' 行全体を削除
End Sub
Sub 空白行を上詰め()
    Selection.SpecialCells(xlCellTypeBlanks).Delete Shift:=xlUp
End Sub

現在の範囲を操作の対象にするCurrentRegion

表の範囲を指定するのが、大変なときは、表の範囲を特定するのに、便利なCurrentRegionプロパティを使って、空白セルや行の削除を行うことができます。
Sub 範囲の空白セルを上詰め4()
    Selection.CurrentRegion.Select
    Selection.SpecialCells(xlCellTypeBlanks).Delete Shift:=xlUp
End Sub
上記のコードも1行にまとめてスリムにすることができます。
Sub 範囲の空白セルを上詰め5()
    Selection.CurrentRegion.SpecialCells(xlCellTypeBlanks).Delete Shift:=xlUp
End Sub
せっかく作ったマクロを利用しやすくするために、マクロのボタンを作成しましょう。
リボンの開発タブから、コントロールにある、挿入ボタンをクリックします。
フォームコントロールのボタンをクリックすると、マクロの登録ダイアログが表示されます。ここで登録したいマクロを選択します。
適当な位置を定め、任意のサイズに マウスをドラッグします。 マウスをとめると、ボタンが作成されます。ボタンが選択状態にあるので、このまま名前を変更します。
さらに、デザインモードであることを確認してボタン上で右クリック。コントロールの書式設定を選択します。

マクロボタンの位置の固定

コントロールの書式設定をクリックしたのは、できあがったボタンが行の削除や挿入で移動したりしないようにするためです。コントロールの書式設定ダイアログが表示されたら、プロパティタブを開き、
セルに合わせて移動やサイズ変更をしない(D)
にチェックを入れます。
OKをクリックしてコントロールの書式設定ダイアログを閉じます。ボタンの完成です。