【VBA】リストボックスの項目を追加・削除・全クリアする方法

目次

はじめに

ユーザーフォームのリストボックスは、固定のリストを表示するだけでなく、ユーザーの操作に応じて項目を動的に追加したり、選択した項目を削除したり、リスト全体を**空(クリア)**にしたりすることができます。これにより、ショッピングカートのような機能や、タスク管理ツールなどを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: 全ての項目を削除する。

これらのメソッドを使いこなすことで、ユーザーの操作に応じて内容が変化する、よりインタラクティブで実用的なユーザーフォームを作成することができます。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次