|
>それぞれの抽出するコード自体は書ききることができました。
>今はまだそれぞれが孤立している状態で、
>ここから条件をつなげていく方法が今ひとつわかりません…。
各条件式をAND演算子やOR演算子でつないでいきます。
例えば、
氏名 Like "山田*" AND (生年月日 >= #1980/02/01# OR 体重 < 75)
です。
こういう文字列を作り、この文字列をFilterプロパティに設定します。
次に、このような文字列を作るVBAのコードをどうするかですが、
No.12728の質問にあった
>>>strFilter = strFilter & " AND 発地都道府県 Like '*" & Me.txt発地都道府県 & "*'"
というコードは、重要なテクニックが使われているコードです。
例えば、次のコードを実行したら、strFilterにはどんな文字列が格納されることになるか
イメージできますか。
strFilter = strFilter & " AND 発地都道府県 Like '*東京*'"
strFilter = strFilter & " AND 発地都道府県 Like '*神奈川*'"
strFilter = strFilter & " AND 発地都道府県 Like '*静岡*'"
答えは、
" AND 発地都道府県 Like '*東京*' AND 発地都道府県 Like '*神奈川*' AND 発地都道府県 Like '*静岡*'"
という文字列ですね。これでは見づらいので、整形すると、
" AND 発地都道府県 Like '*東京*'
AND 発地都道府県 Like '*神奈川*'
AND 発地都道府県 Like '*静岡*'"
ですね。
2行目と3行目にうまくAND演算子が入っています。
つまり、
>>>strFilter = strFilter & " AND 発地都道府県 Like '*" & Me.txt発地都道府県 & "*'"
のコードは、上例の2行目と3行目にうまくAND演算子が入れるための
重要なテクニックです。
ただ、
" AND 発地都道府県 Like '*東京*'
AND 発地都道府県 Like '*神奈川*'
AND 発地都道府県 Like '*静岡*'"
という文字列をFilterプロパティに代入すると、エラーになります。
原因は、先頭にある「 AND 」です。
先頭の「 AND 」だけを取り除く必要があります。
ここも定番のテクニックがあります。
Mid関数を使用します。
Mid関数を使って、
" AND 発地都道府県 Like '*東京*'
AND 発地都道府県 Like '*神奈川*'
AND 発地都道府県 Like '*静岡*'"
という文字列から6字目以降を取り出します。
そうすると、
"発地都道府県 Like '*東京*'
AND 発地都道府県 Like '*神奈川*'
AND 発地都道府県 Like '*静岡*'"
という文字列を取得できます。
|
|