VBA~ユーザーフォームのリストボックスで選択したデータを消去しよう~Excel
ユーザーフォームのリストボックスで選択したデータを消去するにはListIndexプロパティでデータのインデックス番号を取得し、RemoveItemメソッドで消去します。
インデックス番号はリストの上から0,1,2・・・となります。データが選択されていない場合は-1を返します。
書き方(ListIndexプロパティ)
オブジェクト名.ListIndex
書き方(RemoveItemメソッド)
オブジェクト名.RemoveItem インデックス番号
オブジェクト名の確認方法は作成したユーザーフォームファイルをクリックするとユーザーフォームが表示されます。リストボックスを選択するとプロパティウィンドウにオブジェクト名という項目があるので、それがリストボックスのオブジェクト名になります。プロパティウィンドウが表示されていない場合はメニューの表示からプロパティウィンドウをクリックすると表示されます。
例えばリストボックスでユーザー側で選択したデータをコマンドボタン等を押した時の処理に活用することができます。UserForm1というユーザーフォームにListBox1というリストボックスを作成した場合、ユーザーフォームのファイルをクリックするとユーザーフォームが開きます。
ツールボックスの下段のabマーク(コマンドボタン)をクリックしユーザーフォームのコマンドボタンを表示したい箇所でクリックするとコマンドボタンが設定さます。コマンドボタンを選択した状態でもう一度クリックすると入力カーソルが表示されるので消去に書き換えます。
コマンドボタンをダブルクリックすると下のコードが表示されます。
Private Sub CommandButton1_Click() End Sub
ここに処理内容を書き込めばコマンドボタンをクリックしたときの処理を設定できます。今回は下のコードにコマンドボタンをクリックするとリストボックスからユーザーが選択したデータをリストから消去する処理を書き込みました。
Private Sub CommandButton1_Click() If ListBox1.ListIndex = -1 Then MsgBox "項目を選択してください" Else ListBox1.RemoveItem ListBox1.ListIndex End If End Sub
VBAで下のコードを実行すると作成したユーザーフォームが表示されデータを選択して消去をクリックするとリストから選択した項目が消去されます。
Sub test1() Load UserForm1 UserForm1.ListBox1.additem "織田信長" UserForm1.ListBox1.additem "豊臣秀吉" UserForm1.ListBox1.additem "徳川家康" UserForm1.Show End Sub