|
>コードが実行される前にまずエラーメッセージが出るようです。
エラーメッセージが出るとき、strFilterにはどんな文字列が格納されていますか。
次の方法で確認してみてください。
まず、「Me.Filter = Mid(strFilter, 6)」の直前の行に
Debug.Print strFilter
というコードを挿入します。
次に、VBEでイミディエイトウィンドウを開けます。
具体的には、VBEのメニューの「表示(V)」→「イミディエイト ウィンドウ(I)」
のコマンドを実行してください。
その上で、cmdFilter_Clickのイベントプロシージャを実行してみてください。
イミディエイトウィンドウに、「Debug.Print ××」のコードが実行された時点
におけるstrFilter変数に格納された値が表示されます。
strFilter中の日付に関する条件式は、
日付 >= #2015/3/24#
のようになっていなければいけないのですが、
「2015年3月24日」などとなっていたり、「2015/03」(日にちなし)となっていたりしませんか。
>書式を日付にしているからでしょうか・・?
strFilter変数は、テキストボックスのValueプロパティ値を基に生成しているところ、
書式をどのように設定しても、テキストボックスのValueプロパティ値には影響しませんから、
書式設定は関係ないと思います。
>そもそも間違った日付を入力できないように、
>入力規則などを設定したほうがいいでしょうか?
入力規則でもいいでしょう。
ちなみ、私は、入力規則はあまり好きではないです。
入力規則だと、細かな設定がやりにくいからです。
私なら、
Private Sub txt開始日_BeforeUpdate(Cancel As Integer)
If IsDate(Nz(txt開始日.Value,"")) = False Then
Msgbox "おかしな日付です。"
Cancel = True
End
End Sub
とします。
12755のレスでは、cmdFilter_Clickイベントでメッセージを出すコードを紹介したところですが、
入力チェックをするなら、BeforeUpdateで行うのが常道です。
|
|