リスト ボックスを使用する簡単な例を次に示します。
表: クライアント
ID - オートナンバー
姓 - テキスト (255) 名
- テキスト (255)
電子メール - テキスト (255)
テストデータ:
ID LastName FirstName Email
-- ---------- -------------- ------------------
1 Thompson Gord gord@example.com
2 Loblaw Bob bob@example.com
3 Kingsley Hank hank@example.com
4 Thompson Hunter S. hunter@example.com
5 Squarepants Spongebob ss@example.com
6 O'Rourke P. J. pj@example.com
7 Aldrin Edwin "Buzz" buzz@example.com
フォームのレイアウト:
このフォームの VBA モジュール:
Option Compare Database
Option Explicit
Private Sub Form_Load()
Me.lstSearchResults.RowSource = ""
End Sub
Private Sub btnSearch_Click()
Me.lstSearchResults.SetFocus
Me.lstSearchResults.Value = Null
Me.lstSearchResults.RowSource = _
"SELECT ID, LastName, FirstName FROM Clients " & _
"WHERE LastName LIKE ""*" & DQ(Me.txtSearchLastName.Value) & _
"*"" AND FirstName LIKE ""*" & DQ(Me.txtSearchFirstName.Value) & "*"""
End Sub
Private Function DQ(s As Variant) As String
' double-up double quotes for SQL
DQ = Replace(Nz(s, ""), """", """""", 1, -1, vbBinaryCompare)
End Function
Private Sub btnLookupEmail_Click()
If IsNull(Me.lstSearchResults.Value) Then
Me.txtEmail.Value = ""
Else
Me.txtEmail.Value = DLookup("Email", "Clients", "ID=" & Me.lstSearchResults.Value)
End If
End Sub
フォームが最初に開かれたとき、すべてが空です。
「thompson」と入力して (引用符なしで) クリックするとbtnSearch
、リスト ボックスに client が表示されますWHERE LastName LIKE "*thompson*"
。(コードを見ると、FirstName を指定すると、FirstName でも一致することがわかります。)
リスト ボックス内の項目の 1 つを選択してクリックbtnLookupEmail
すると、電子メール アドレスが下のテキスト ボックスに表示されます。