目次
はじめに
ユーザーフォームのリストボックスは、固定のリストを表示するだけでなく、ユーザーの操作に応じて項目を動的に追加したり、選択した項目を削除したり、リスト全体を**空(クリア)**にしたりすることができます。これにより、ショッピングカートのような機能や、タスク管理ツールなどをVBAで作成することが可能になります。
この記事では、リストボックスの項目を操作するための3つの基本的なメソッド、.AddItem
(追加)、.RemoveItem
(削除)、.Clear
(全削除)の使い方を、具体的なサンプルコードと共に解説します。
1. 項目を追加する (.AddItem
)
.AddItem
メソッドは、リストボックスに新しい項目を1行追加します。
この例では、「追加」ボタンをクリックすると、現在シートで選択されているセル(アクティブセル)の値をリストボックスの末尾に追加します。
サンプルコード
' 「追加」ボタン(AddItemButton)がクリックされたときの処理
Private Sub AddItemButton_Click()
' アクティブセルの値が空白でなければリストに追加
If ActiveCell.Value <> "" Then
Me.TaskListBox.AddItem ActiveCell.Value
End If
End Sub
コードの解説
Me.TaskListBox.AddItem ActiveCell.Value
:TaskListBox
というリストボックスに、ActiveCell.Value
(アクティブセルの値)を新しい項目として追加しています。項目はリストの最後に追加されます。
2. 選択項目を削除する (.RemoveItem
)
.RemoveItem
メソッドは、指定したインデックス番号の行をリストボックスから削除します。
この例では、「削除」ボタンをクリックすると、リストボックスで現在選択されている項目を削除します。
サンプルコード
VB.Net
' 「削除」ボタン(RemoveItemButton)がクリックされたときの処理
Private Sub RemoveItemButton_Click()
With Me.TaskListBox
' .ListIndex で選択行のインデックスを取得し、項目が選択されているか確認
If .ListIndex > -1 Then
' .RemoveItem にインデックス番号を渡して、その行を削除
.RemoveItem .ListIndex
Else
MsgBox "削除する項目を選択してください。", vbExclamation
End If
End With
End Sub
コードの解説
If .ListIndex > -1 Then
:.ListIndex
は選択されている行のインデックス(0始まり)を返します。何も選択されていない場合は-1
を返すため、このIf
文で項目が選択されていることを確認しています。.RemoveItem .ListIndex
:.RemoveItem
メソッドに、引数として削除したい行のインデックス番号を渡します。ここでは、.ListIndex
で取得した選択行のインデックスをそのまま渡すことで、選択項目を削除しています。
3. 全ての項目をクリアする (.Clear
)
.Clear
メソッドは、リストボックス内の全ての項目を一括で削除し、リストを空にします。
サンプルコード
' 「全クリア」ボタン(ClearAllButton)がクリックされたときの処理
Private Sub ClearAllButton_Click()
Me.TaskListBox.Clear
End Sub
コードの解説
Me.TaskListBox.Clear
:TaskListBox
の内容を全てクリアします。引数は不要で、非常にシンプルです。
まとめ
今回は、リストボックスの項目を動的に操作するための3つの基本メソッドを解説しました。
.AddItem
: 項目を1つ追加する。.RemoveItem
: 選択した項目を1つ削除する。.Clear
: 全ての項目を削除する。
これらのメソッドを使いこなすことで、ユーザーの操作に応じて内容が変化する、よりインタラクティブで実用的なユーザーフォームを作成することができます。