リストボックスのアイテムをダイナミックに追加または削除するには



リストボックスに表示されるアイテムをアプリケーション実行時に、ダイナミックに追加したり削除するテクニックを解説します。ここで紹介するテクニックは、MyLib.mdaに登録されているクラスライブラリーを使用しますので、事前にダウンロードしておいてください。

  1. Access 97を起動して新規データベースを作成します。
  2. データベースウインドウが表示されたら、モジュールのタブをクリックして新規作成ボタンをクリックします。
  3. メニューのツールから参照設定をクリックして、データベースライブラリー(MyLib.mda)を登録します。
  4. データベースウインドウからフォームのタブをクリックして、新規作成ボタンをクリックします。
  5. フォームが表示されたら、フォーム上にリストボックステキストボックスそして4個のコマンドボタンを作成します。
    Forms_Intermediate_008_fig1
    図1-フォーム上にリストボックス、テキストボックス、コマンドボタンを作成

    各オブジェクトのプロパティは以下のように設定します。

    Object Property Setting
    ListBox Name lstItems
    TextBox Name txtItem
    ComandButton1 Name cmdAdd
    Caption Add Item
    CommandButton2 Name cmdRemove
    Caption Remove Item
    CommandButton3 Name cmdClear
    Caption Clear Items
    CommandButton4 Name cmdSort
    Caption Sort Items


    フォームのOn Open, On Closeイベント、それから各コマンドボタンののOn Clickイベントに以下のVBAコードを追加します。

    リスト1-各種イベント用コード
    Dim mobjListBox As Object
    
    Private Sub cmdAdd_Click()
      mobjListBox.AddItem (Me!txtItem)
      txtItem.SetFocus
    End Sub
    
    Private Sub cmdClear_Click()
      mobjListBox.Clear
    End Sub
    
    Private Sub cmdRemove_Click()
      mobjListBox.RemoveSelected
    ' mobjListBox.RemoveItem (Me!lstItems.ListIndex)
    End Sub
    
    Private Sub cmdSort_Click()
      mobjListBox.Sort
    End Sub
    
    Private Sub Form_Close()
      Dim varRet As Variant
      varRet = CloseMyBox_FS("I", mobjListBox)
    End Sub
    
    Private Sub Form_Open(Cancel As Integer)
      Set mobjListBox = GetMyBox_FS("I")
      Set mobjListBox.Control = Me!lstItems
    End Sub
     

    フォームのOn Openイベントでは、clsMyBoxのインスタンスを生成してモジュールレベルのメモリ変数(mobjComboBox)に格納します。On Closeイベントでは、インスタンスをクローズします。

    Add Itemボタンをクリックした
    とき、AddItemメソッドを使用してアイテムを追加しています。

    Remove Item
    ボタンをクリックしたときはRemoveSelected(RemoveItem)メソッドを使用してリストボックスから選択したアイテムを削除しています。

    Clear ボタンをクリックしたときは、リストボックスの全アイテムを消去します。

    Sort ボタンをクリックしたときは、リストボックスのアイテムを並べ替えています。

  6. フォームをfrmListBoxDemoの名称で保存します。
  7. ビューモードに切り替えたら、テキストボックスに任意のアイテムを入力してAdd Itemボタンをクリックして追加します。アイテムを削除するときは、該当アイテムを選択してRemove Itemボタンをクリックします。Clearボタンをクリックすると全アイテムが消去されます。Sortボタンをクリックすると並べ替えします。

    Forms_Intermediate_008_fig2
    図2-リストボックスに任意のアイテムを追加した例

     

  8. 最後に、フォームを閉じてAccessを終了します。