Rivkin Dmitry |
---|
__Michelle |
---|
Возник вопрос. Чисто теоретический. А если источник данных поля со списком не запрос, а список значений, к нему подобный "фильтр" можно ли как-то применить? |
Карты в руки! Пробуй, докладай! |
Ну что ж, раз инициатива, как всегда, наказуема....)))
Если в списке один столбец.
Вариант 1. С функцией Filter.
Lst.RowSource = Join(Filter(Split(<исходный RowSource>, ";"), <искомый фрагмент>, True, vbTextCompare))
Вариант 2. Без функции Filter.
Dim m, s As String, i As Integer
m = Split(<исходный RowSource>, ";")
For i = 0 To UBound(m)
s = s & IIf(m(i) Like "*" & <искомый фрагмент> & "*", m(i) & ";", "")
Next
Lst.RowSource = s
Если в списке больше одного столбца.
Вариант 3.
Dim k As Byte, ks As Byte
Dim m, s As String, i As Integer, j As Byte, n As Integer
k = <количество столбцов>
ks = <нужный столбец>
m = Split(<исходный RowSource>, ";")
n = -1
For i = ks - 1 To UBound(m) Step k
n = n + 1
If m(i) Like "*" & <искомый фрагмент> & "*" Then
For j = n * k To n * k + (k - 1)
s = s & m(j) & ";"
Next
End If
Next
Lst.RowSource = s