JOIN 関数を使用してよりクリーンで安全なコードを作成する
"," "AND" "OR" などの区切り記号を使用して増分 SQL 文字列を繰り返し作成していることに気付いた場合は、配列データの生成を集中化してから、VBA の Join(array, delimiter) 関数を使用すると便利です。
興味深いキーが配列にある場合、フォーム フィルター プロパティの SQL WHERE フラグメントを構築するための複数選択リストボックスからのユーザー選択は、次のようになります。
Private Sub lbYear_AfterUpdate()
Dim strFilter As String
Dim selction As Variant
selction = ListboxSelectionArray(lbYear, lbYear.BoundColumn)
If Not IsEmpty(selction) Then
strFilter = "[Year] IN (" & Join(selction, ",") & ")"
End If
Me.Filter = strFilter
If Not Me.FilterOn Then Me.FilterOn = True
End Sub
選択した lisbok 行から任意の列データを選択する汎用関数は、次のようになります。
'Returns array of single column data of selected listbox rows
'Column index 1..n
'If no items selected array will be vbEmpty
Function ListboxSelectionArray(lisbox As ListBox, Optional columnindex As Integer = 1) As Variant
With lisbox
If .ItemsSelected.Count > 0 Then
Dim str() As String: ReDim str(.ItemsSelected.Count - 1)
Dim j As Integer
For j = 0 To .ItemsSelected.Count - 1
str(j) = CStr(.Column(columnindex - 1, .ItemsSelected(j)))
Next
ListboxSelectionArray = str
Else
ListboxSelectionArray = vbEmpty
End If
End With
End Function
アプリケーション ライブラリ内のいくつかの配列ビルダーとコーディングをより VB.NET に見えるようにすることができます