pickup

 

こんにちは。伊川(@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

ここがポイント

ここがポイント
Function8.png
今回の最強の検索フォームは、販売にまで至りました。私も業務上で使っています。料理と同じで、自分がおいしいと思えないものは、他人様には勧めれません。

 

まとめ

今回で最強の検索フォームは最終回になります。

お疲れ様でした。

今回のサンプルファイルは、No102です。

毎日の業務が、3時間短縮できます

わからない事を延々と考えるのは、無駄です。

  • なんで作動かないの?
  • もうやだ!VBAなんか嫌い!
  • ネットで調べても情報がない!

必ず作動するコードが、ここにあります。

スポンサーリンク

Twitterでフォローしよう

おすすめの記事