Excel VBA 「カー計簿」削除処理
Excel VBA 「カー計簿」削除処理の実装
削除するレコードの選択
リストボックスから削除する対象レコードをクリックします。
変更処理を行いますか?で「はい」を選択します。
変更処理画面に切り替わる
「変更処理」となり、修正ボタン、削除ボタンが表示されます。削除ボタンをクリックします。
削除処理を実行
削除対象レコードの内容を確認し、「はい」をクリックします。
削除処理のソースリスト
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
If lbl_Mode = "削除" Then rc = MsgBox("No: " + CStr(Pub_Select_No) + "を削除しますか?", vbYesNo + vbQuestion, "確認") If rc = vbYes Then Sh_Temp.Rows(Wk_TempLine).Delete Sh_Data.Rows(Wk_DataLine).Delete MsgBox ("削除しました。") Pub_Select_No = 0 lbl_Mode.Caption = "" Exit Sub Else MsgBox ("キャンセルしました。") txt_Date = Format(Date, "yyyy/m/d") Cmb_Bunrui.Value = "" Cmb_Komok.Value = "" lbl_Mode.Visible = True lbl_Mode.Caption = "新規" Exit Sub End If Exit Sub End If |
削除しますか?で「はい」を選択すると If rc = vbYes Then の処理を行います。Wk_TempLine と Wk_DataLine が削除すべき行(Row)です。事前に以下のように求めています。ワークシート(TempとData)の指定行(Row)を.Deleteで削除します。削除後は「削除しました。」とメッセージ表示します。パブリック変数の行数をクリアし、ラベルの削除をクリアし、処理をぬけます。
削除しますか?で「いいえ」を選択すると 「キャンセルしました。」とメッセージ表示し、初期値に戻して処理を抜けます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
Wk_TEndLine = Sh_Temp.Cells(Rows.Count, 1).End(xlUp).Row For i = 1 To Wk_TEndLine If Sh_Temp.Cells(i, 1) = Pub_Select_No Then Wk_TempLine = i Exit For End If Next i Wk_DEndTLine = Sh_Data.Cells(Rows.Count, 1).End(xlUp).Row For i = 1 To Wk_DEndTLine If Sh_Data.Cells(i, 1) = Pub_Select_No Then Wk_DataLine = i Exit For End If Next i |
Pub_Select_Noが保持している行(Row)を最終行までループして一致するNoを検索して求めています。