こんにちは。伊川(@naonaoke)です。
今回は、上の記事の続きです。
今回で、最強の検索フォームは最終回です。
今回が多分、一番難しいです。
目次
このブログはこんな人にお勧め
- あらゆる条件で検索をしたい人
- 市販のような検索フォームが欲しい人
最強の検索フォームにVBAのコードを仕込む
変数を使って、検索条件を追加していきます。
フォームの作成に関しては、すでに作成済の状態で進めていきます。
フォームの作成に関しては、下記に記事を参考にしてください。
最強の検索フォーム 作成手順その1 VBAのコードを確認する
上記はコードです。
見た感じ同じようなコードがいくつも並んでいます。
そんなに最強の検索フォームを言ってもそんなに難しくありません
最強の検索フォーム 作成手順その2 変数に代入する
myStreという変数に、検索条件を追加していきます。
ここがポイント
3行目で、myStreを初期化します。
変数はなにが入っているかわからないので、必ず初期化してください。
検索条件に関しては、日時、周知者以外は、ワイルドカードを設定しています。
あいまい検索ができるようにしています。
変数はなにが入っているかわからないので、必ず初期化してください。
検索条件に関しては、日時、周知者以外は、ワイルドカードを設定しています。
あいまい検索ができるようにしています。
ワイルドカードについては、上の記事を確認してください。
他にもいろいろな仕掛けをしていますが、下記のコードが最強の検索フォームのすべてになります。
最強の検索フォーム 作成手順その3 VBAのコード
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 |
Option Compare Database Private Sub コマンド101_Click() Dim myStr As String '条件 myStr = "" '-------------------------------------日時検索-------------------- If IsDate(開始日.Value) And IsDate(終了日.Value) Then myStr = myStr & " And (日時 Between #" & 開始日.Value _ & "# And #" & 終了日.Value & "#)" ElseIf IsDate(開始日.Value) Then myStr = myStr & " And 日時=#" & 開始日.Value & "#" ElseIf IsDate(終了日.Value) Then myStr = myStr & " And 日時=#" & 終了日.Value & "#" End If '-------------------------------------日時検索終了-------------------- '-------------------------------------周知者検索--------------- If Not IsNull(Me.周知者) Then myStr = myStr & " And 周知者= '" & 周知者.Value & "'" End If '-------------------------------------周知者検索終了----------- '-------------------------------------分類--------------------- If Not IsNull(大分類) Then myStr = myStr & " And 大分類 Like '*" & 大分類.Value & "*'" End If If Not IsNull(中分類) Then myStr = myStr & " And 中分類 Like '*" & 中分類.Value & "*'" End If If Not IsNull(小分類) Then myStr = myStr & " And 小分類 Like '*" & 小分類.Value & "*'" End If '-------------------------------------分類終了------------------ '-------------------------------------内容--------------------- If Not IsNull(内容) Then myStr = myStr & " And 内容 Like '*" & 内容.Value & "*'" End If '-------------------------------------内容終了------------------ '-------------------------------------検索フォーム起動--------------------- If myStr = "" Then MsgBox "抽出条件を入力してください。", vbCritical, "エラー" Else DoCmd.OpenForm "F_周知", , , Mid(myStr, 6) DoCmd.Close acForm, Me.Name End If End Sub Private Sub コマンド110_Click() '検索条件のクリア Me.[開始日] = Null Me.[終了日] = Null Me.[周知者] = "" Me.[内容] = "" Me.[大分類] = "" Me.[中分類] = "" Me.[小分類] = "" End Sub |
ここがポイント
ここがポイント

今回の最強の検索フォームは、販売にまで至りました。私も業務上で使っています。料理と同じで、自分がおいしいと思えないものは、他人様には勧めれません。
まとめ
今回で最強の検索フォームは最終回になります。
お疲れ様でした。
今回のサンプルファイルは、No102です。
毎日の業務が、3時間短縮できます

わからない事を延々と考えるのは、無駄です。
- なんで作動かないの?
- もうやだ!VBAなんか嫌い!
- ネットで調べても情報がない!
必ず作動するコードが、ここにあります。