こんにちは。伊川(@naonaoke)です。
今回は、上の記事の続きです。
今回で、最強の検索フォームは最終回です。
今回が多分、一番難しいです。
目次
このブログはこんな人にお勧め
- あらゆる条件で検索をしたい人
- 市販のような検索フォームが欲しい人
最強の検索フォームにVBAのコードを仕込む
変数を使って、検索条件を追加していきます。
フォームの作成に関しては、すでに作成済の状態で進めていきます。
フォームの作成に関しては、下記に記事を参考にしてください。
最強の検索フォーム 作成手順その1 VBAのコードを確認する
上記はコードです。
見た感じ同じようなコードがいくつも並んでいます。
そんなに最強の検索フォームを言ってもそんなに難しくありません
最強の検索フォーム 作成手順その2 変数に代入する
myStreという変数に、検索条件を追加していきます。
ここがポイント
3行目で、myStreを初期化します。
変数はなにが入っているかわからないので、必ず初期化してください。
検索条件に関しては、日時、周知者以外は、ワイルドカードを設定しています。
あいまい検索ができるようにしています。
変数はなにが入っているかわからないので、必ず初期化してください。
検索条件に関しては、日時、周知者以外は、ワイルドカードを設定しています。
あいまい検索ができるようにしています。
ワイルドカードについては、上の記事を確認してください。
他にもいろいろな仕掛けをしていますが、下記のコードが最強の検索フォームのすべてになります。
最強の検索フォーム 作成手順その3 VBAのコード
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なんか嫌い!
- ネットで調べても情報がない!
必ず作動するコードが、ここにあります。