見出し画像

この春にやりたいこと 住所録をつくる⑬ ~「削除」~

ExcelVBAを使用して、住所録を作っていきたい。
ユーザーフォーム上に入力フォームを作り、エクセルシート上に入力データを保存する、という流れを実現していく。
今回は、「削除」の動作を完成させたい。

削除の動作

修正の時との違い

  • OptionButtonをOpt_削除を選択

  • 削除も、削除したいデータをLst_一覧から選んで、データを各Boxに表示させる、というところまでは修正の時と同じ動作になる。

  • 住所録シートの修正したい行の名前、性別などの特定の列の文字を修正する、という形で修正をした。削除の時は、住所録シートの削除したい行を丸ごと削除する、という動作になる。

削除のコード

Private Sub Btn_削除_Click()
    Dim R As Long, LR As Long
    With Sheets("住所録")
        LR = .Cells(Rows.Count, 1).End(xlUp).Row
        For R = 2 To LR
            If Txt_ID.Text = .Cells(R, 1).Value Then
                .Cells(R, 1).EntireRow.Delete
            End If
        Next R
    End With
    Call TextBox内の値を消去
End Sub
  • 修正のコードを比べるとシンプルだが、よく見ると修正の時と同じように、ForNextで住所録シートの2行名から最下行のIDと、Txt_IDが同じものがあれば、削除の動作が実行される、というものになる。

  • EntireRowで、選択されたセルの行(この場合は.Cells(R,1))全体を取得した状態になる。

  • Deleteで、選択された範囲を削除する。この場合は.cells(R,1)の行ごと削除される。

  • Call TextBox内の値を消去で各Boxの値を削除する、

このような流れで削除が実行される。


ID2の田中花子を選択した状態。


削除を実行した後。ID2の行が消えている

追加機能

これである程度完成された。しかしまだ実際に使うにはやや不便なのでもうちょっと機能を追加させたい。


名前検索

名前検索は、今までの例でいうと3件しか登録されていない状態なので、修正・削除したい行を見つけることは目視でも容易だ。しかしこれが100件200件となるとちょっと大変になる。名前検索し、Lst_一覧内に絞った状態の結果のみ表示させるようにしたい。

郵便番号検索

郵便番号検索は、郵便番号を覚えていれば都道府県以降の住所の入力が楽になるが、逆に住所はわかるが郵便番号がわからない、というケースがあるかもしれない。そういうときのために追加させておきたい。

いいなと思ったら応援しよう!

この記事が参加している募集