こちらでは、削除したいデータのいずれかのセルを選択して、「選択行の削除」ボタンを押すだけで、その行のデータを削除して上に詰めることができる機能の実現方法について紹介していきます。
以下のように、予め指定した列(「名前」と「性別」)のみが削除されます。

※こちらで作成したファイルは、記事の最後にて配布しています。
1. 開発準備
こちらでは、以下の表を元に実現していきます。

今回は、削除対象の項目は「名前」と「性別」とし、「No」は削除されないように実現していきます。
シートの用意ができたら、[開発]タブから[マクロ]を選択し、表示された設定画面にて「開発する機能の名前」を入力して、[作成]を選択します。
こちらでは、「DeleteSelectedData」と入力しています。

次に表示される以下の画面の「Sub ○○」から「End Sub」の間にコードを記述します。
「Option Explicit」は、VBEの設定内容次第では表示されません。「Option Explicit」についての解説はこちらでは省略します。

2. コードの記述
以下のコードを記述します。
Sub DeleteSelectedData()
Dim r As Long
r = ActiveCell.Row
If r < 3 Or r > 12 Then Exit Sub
With Range(Cells(r, "C"), Cells(r, "D"))
.ClearContents
.Cut
End With
Range("C13").Insert Shift:=xlDown
End Sub
では、コードについて解説していきます。
Dim r As Long
r = ActiveCell.Row
数値を格納する用の変数(r)を用意し、アクティブになっているセルの行番号(ActiveCell.Row)を格納しています。
If r < 3 Or r > 12 Then Exit Sub
先ほど取得した行番号が、3未満、または12より大きい場合、要するに今回使用する表のデータ行以外がアクティブな場合に、処理を終了(Exit Sub)しています。

「If」は処理を1行で記述できる場合、「End If」を省略することができます。
With Range(Cells(r, "C"), Cells(r, "D"))
.ClearContents
.Cut
End With
Range("C13").Insert Shift:=xlDown
アクティブセルの行の削除対象の範囲(r行目のC列からD列)を指定し、値のみを削除(ClearContents)して切り取り(Cut)、そして末尾(セルC13を基準)に挿入(Insert)しています。
単純にセルを削除してしまうと、以下のように罫線が崩れてしまうため、このような手順で実装しています。

3. ボタンの作成
コードが完成したら、実行用のボタンを用意します。
ボタンは、[開発]タブの中の[挿入]から作成することができます。
ボタンには開発した機能「DeleteSelectedData」を割り当てます。

4. 完成
以上の手順で完成です。
削除したいデータのいずれかのセルを選択して、「選択行の削除」ボタンを押すだけで、その行のデータを削除して上に詰めることができます。

▼サンプルファイル▼









































































































