リストボックスのデータを削除する
選択行をRemoveItemで削除します。未選択なら何もしないようにチェックします。
実行前に確認
- 削除するのはフォーム内のリスト項目です。シートの行は削除しません。新規フォームでRowSourceとControlSourceを空欄にして使います。
- コードと公式仕様を照合した学習用の例です。Excel実機での実行確認は行っていません。
1サンプルコード
'【貼付先:UserForm1 のコードモジュール】
Option Explicit
Private Sub UserForm_Initialize()
With Me.ListBox1
.AddItem "残す行"
.AddItem "削除する行"
.MultiSelect = fmMultiSelectSingle
End With
Me.CommandButton1.Caption = "選択行を削除"
End Sub
Private Sub CommandButton1_Click()
If Me.ListBox1.ListIndex < 0 Then
MsgBox "削除する行を選んでください。"
Exit Sub
End If
Me.ListBox1.RemoveItem Me.ListBox1.ListIndex
End Sub図で見る選択を確かめて削除
イメージ図選択行をRemoveItemで削除します。未選択なら何もしないようにチェックします。
選択
削除したい行を選ぶ
判定
ListIndexが-1なら中止
削除
RemoveItemで1行除く
各操作は、このガイドに指定されたフォームのコードで行います。
コードの処理を説明する模式図です。実際の画面や実行結果を撮影したものではありません。
使い方・実行手順を確認する5つの手順で、コードの使い方を確認できます
- 1
Windows版デスクトップExcelの練習用ブックを.xlsmで保存し、Alt+F11→[挿入]→[ユーザーフォーム]で、名前がUserForm1の空のフォームを用意します。各例は別々に試します。
- 2
ツールボックスからListBox1とCommandButton1を各1個を置き、各コントロールの[(Name)]が記載どおりか確認します。
- 3
UserForm1を右クリック→[コードの表示]を開き、掲載コード全体をフォームのコードモジュールへ貼り付けます。標準モジュールには貼り付けません。
- 4
VBEでUserForm1を選び、F5でフォームを表示します。 2行目を選び、「選択行を削除」をクリックします。
- 5
「残す行」だけになります。選択せずにボタンを押すと選択を促すメッセージが出ます。