リストボックスを配置したデータ入力フォームの作成
フォームにリストボックスとテキストボックスを配置します。
リストボックスには値集合ソース プロパティで、いくつかのテキストデータを入力しています。
テキストボックスの入力データが登録されていなければリストボックスに追加するVBA
テキストボックスの更新後処理イベントを[イベント プロシージャ]に設定し、下記VBAを入力します。
VBAの解説
・テキストボックスに入力がなければSubプロシージャから抜けます。
・リストボックスのリストが登録されていれば、Split関数で分解し配列に代入します。
・配列の要素数だけ、For Eachでループします。
・要素が文字列の場合、両側の「"」文字を取り除きます。
・テキストボックスの入力データと要素を比較します。
・リストになければAddItemでリストボックスに追加します。
・テキストボックスの入力データをクリアします。
Private Sub テキスト2_AfterUpdate()
Dim yar As Variant
Dim t1 As Variant
Dim bflg As Boolean
Dim s1 As String
If Nz(Me!テキスト2, "") = "" Then
Exit Sub
End If
bflg = False
If Me!リスト0.RowSource <> "" Then
yar = Split(Me!リスト0.RowSource, ";")
For Each t1 In yar
If Left(t1, 1) = """" Then
s1 = Mid(t1, 2, Len(t1) - 2)
Else
s1 = t1
End If
If s1 = Me!テキスト2.Value Then
bflg = True
End If
Next
End If
If bflg = False Then
Me!リスト0.AddItem Me!テキスト2.Value
End If
Me!テキスト2 = Null
End Sub
実行結果です。
テキストボックスに未登録のデータを入力し、Enterキーを押します。
するとリストボックスのリストの最後に、入力されたデータが追加されます。
リストボックスのリストの先頭にデータを追加したい場合、Additemにインデックス番号を追加します。
Me!リスト0.AddItem Me!テキスト2.Value, 0
先頭のインデックス番号は0になります。
これで下のように先頭に追加できます。