日付をテキストボックスで指定してオートフィルターしたいが?

Question 93.1   Previous Next
どうしても思い通りにならず困っていたところ、先生のホームページに出会いました。お知恵を拝借できればと思い質問させて頂きます。
今回は、テキストボックス(2つ)から日付を入力し、その2つの期間内のデータをオートフィルターで抽出し、別のシートにコピーしたいと思ったのですが、なぜか何も抽出できず、タイトル以外は空のシートができてしまいます。
テキストボックスが日付として認識されていないのだろうという事はわかっているのですが…。
見て頂けると幸いです。宜しくお願い致します。
Private Sub 質問_CommandButton1_Click()
    Application.ScreenUpdating = False
    Dim TextBox1 As Date
    Dim TextBox2 As Date
    With Worksheets("表")
        ActiveSheet.Range("A4:N200").AutoFilter , Field:=8, _
            Criteria1:=">=TextBox1", Operator:=xlAnd, _
            Criteria2:="<=TextBox2"
        ActiveSheet.Range("A4:N200").AutoFilter Field:=11, Criteria1:="有"
        ActiveSheet.Range("A4:N200").AutoFilter Field:=12, Criteria1:="<>"
            Range("A4:N70").Select
            Selection.Copy
            Sheets.Add After:=Sheets(Sheets.Count)
            ActiveSheet.Paste
            Range("A1").Select
            Sheets("表").Select
            Application.CutCopyMode = False
            .AutoFilterMode = False
            Range("A4").Select
        UserForm1.TextBox1.Text = ""
        UserForm1.TextBox2.Text = ""
        Unload UserForm1
    End With
    Application.ScreenUpdating = True
End Sub
Answer   Copyright (C) 2009.2.28 永井善王
ご質問のポイントは、右図のようなワークシートのデータを、H列に入力されている日付でオートフィルターしたいのですね。

日付が関係する処理は、ややこしい場合が多いですね。
あなたのマクロの中にある
Dim TextBox1 As Date というコードはユーザーフォームのテキストボックスのデータ型を日付にしたいのでしょうが、テキストボックスのデータ型はテキストに決まっているので変更することは不可能と思います。

以下に示すマクロは拙著「 作りながら覚える! Excel VBA マクロ 組み方講座 」に載っているものを応用して作った関係部分だけですが、うまくいくと思います。これを試してみて結果をお知らせいただけませんか。お待ちしています。
Private Sub CommandButton1_Click()
    With Worksheets("表")
        開始年月日 = ">=" & TextBox1.Text
        終了年月日 = "<=" & TextBox2.Text
        ActiveSheet.Range("A4:N200").AutoFilter , Field:=8, _
            Criteria1:=開始年月日, Operator:=xlAnd, _
            Criteria2:=終了年月日
        Unload UserForm1
    End With
End Sub
ありがとうございました
先生こんにちは。 早々にご回答を頂きありがとうございました。先生に教えて頂いたとおりに書き直したところ、無事に日付での抽出ができました。 本当にありがとうございます。

読んでみると、なるほど…と納得するのですが、自分では全く考えもしなかった構文に 己の力が未熟である事を実感致しました。 これを機会に、楽しみながらプログラミングできるよう、日々勉強したいと思います。

さっそく明日、本屋さんで先生の本を購入しようと思います。 本当にありがとうございました!! 寒い日が続いておりますが、お風邪など召しませんよう、健やかにお過ごしくださいませ。

 

Excel VBA Macro