いつもお世話になります。
エクセル2007でVBAでオートフィルタを操作したいのですが、
一部うまくいきません。
以下の様なコードを書いて
日付で絞り込みたいのですが、
何も抽出されません。
リストを見てみると、変数はちゃんと入っており
OK ボタンを押すとその日付で抽出されます。
何故VBAでの操作では抽出されないのでしょうか。
ご存じの方がおられましたら、よろしくお願いします。
Sub test()
Dim mydate As Variant
Dim rng3 As Range
Dim fmt As Variant
Dim objList3 As ListObject
Dim wb1 As Workbook
Dim wb2 As Workbook
Dim wb4 As Workbook
Dim sh1 As Worksheet
Dim sh2 As Worksheet
Dim sh3 As Worksheet
Dim sh4 As Worksheet
Dim sh7 As Worksheet
'-----------------------------------------------------------------------
Set wb1 = Workbooks("301.xlsm")
Set wb2 = Workbooks("1.xls")
Set wb4 = Workbooks("2.xls")
Set sh1 = wb1.Worksheets("@")
Set sh2 = wb1.Worksheets("@@")
Set sh3 = wb2.Worksheets("@@@")
Set sh4 = wb2.Worksheets("@@@@")
Set sh7 = wb4.Worksheets("@@@@@")
'----------------------------------------------------------
sh2.Range("A1:z63").ClearContents
With sh7
Set objList3 = .ListObjects("リスト1")
fmt = .Range("A2").NumberFormatLocal
mydate = Format(mydate, fmt)
objList3.Range.AutoFilter Field:=7, Criteria1:=mydate
objList3.Range.AutoFilter Field:=5, Criteria1:="test"
Set rng3 = objList3.Range.SpecialCells(xlCellTypeVisible)
rng3.Copy sh2.Range("A2")
objList3.Range.AutoFilter Field:=5
objList3.Range.AutoFilter Field:=5, Criteria1:=">=190"
Set rng3 = objList3.Range.SpecialCells(xlCellTypeVisible)
rng3.Copy sh2.Range("A20")
objList3.Range.AutoFilter Field:=5
objList3.Range.AutoFilter Field:=7
End With
Application.CutCopyMode = False
Set rng3 = Nothing
Set fmt = Nothing
Set objList3 = Nothing
Set wb1 = Nothing
Set wb2 = Nothing
Set wb4 = Nothing
Set sh1 = Nothing
Set sh2 = Nothing
Set sh3 = Nothing
Set sh4 = Nothing
Set sh7 = Nothing
End Sub
(一部省略しています)
No.1
- 回答日時:
mydate = Format(mydate, fmt)
の部分が間違っています。
この時点ではmydateには何も入力されていないはずです。
(一部省略部分なのでしょうか)
fmt = .Range("A2").NumberFormatLocal
mydate = Format(mydate, fmt)
を
mydate = Range("A2").Value
としてみて下さい。
No.2ベストアンサー
- 回答日時:
コードが長すぎてあまりちゃんと読んでいませんが……。
変数 mydate はStringですよね?
AutoFillterに渡す日付を文字列ではなく、日付データにすると上手くいきそうな気がします。
objList3.Range.AutoFilter Field:=7, Criteria1:=mydate
↓
objList3.Range.AutoFilter Field:=7, Criteria1:=DateValue(mydate)
この回答への補足
date型にしたらうまくいきました。
ありがとうございました!
でもずっとvariant型で問題なかったのに
何故でしょうか・・・・
ありがとうございます。
mydateはvariant型にしています。
date型でやってみます!
今日は時間がないので、明日にでも。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 2つ目のコンボボックスが動作しません。 3 2023/03/25 12:29
- Visual Basic(VBA) Excel vbaについての質問 3 2023/04/18 16:14
- Visual Basic(VBA) VBAが止まります。 3 2022/08/31 14:09
- Visual Basic(VBA) Sheet1をフィルターで「りんご」を抽出し、Sheet2へ地域を貼り付ける下記マクロを変更して S 2 2022/12/11 03:01
- Visual Basic(VBA) VBAが止まります。 2 2022/09/02 14:02
- Visual Basic(VBA) VBAでoutlook365が起動しません。 4 2022/08/25 13:31
- Visual Basic(VBA) エクセルVBAのコードで質問です。 下のコードはJ16の文字列をB3を起点とする範囲から探して、見つ 5 2023/04/07 11:07
- Visual Basic(VBA) オブジェクトが見つかりません 1 2023/06/24 19:43
- Visual Basic(VBA) エクセルのマクロを使ってメールを送る方法について教えてください 2 2022/03/29 01:36
- Visual Basic(VBA) ExcelVBAに関する質問 3 2023/02/17 10:47
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセル:VBAで月変わりで、自...
-
VBA:同じ文字列データの比...
-
Excel VBA インデックスの境...
-
VBAで条件が一致する行のデータ...
-
EXCELマクロで全シート対...
-
シャープのアクオス sh-m25 を...
-
Excel で行を指定回数だけコピ...
-
excelの差込印刷で可視セルだけ...
-
エクセルVBA 別シートの複数の...
-
エクセルVBAで 2種のリストを...
-
vbaでコントロールブレイク
-
Excelでデータの抽出&別シート...
-
【WORD差し込み印刷】複数レコ...
-
VBAで複雑な構成の転記
-
ソフトバンク 911SH 着...
-
iPhoneのアドレス帳、PCとの同...
-
ドコモの電話帳バックアップに...
-
携帯修理出して戻ってきたら、L...
-
MicroSDにPC音楽を 811sh
-
LAVIE Direct DT PC-GD298ZZAL...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel で行を指定回数だけコピ...
-
エクセルVBA 別シートの複数の...
-
シャープのアクオス sh-m25 を...
-
excelの差込印刷で可視セルだけ...
-
Excel VBA インデックスの境...
-
VBA:同じ文字列データの比...
-
エクセルVBAで 2種のリストを...
-
エクセル:VBAで月変わりで、自...
-
歯抜けの時間を埋めて行の挿入
-
エクセルVBAで SendKeys "{TAB}"
-
VBAで条件が一致する行のデータ...
-
VBA別シートの最終行の下行へ貼...
-
EXCELマクロで全シート対...
-
Excel VBAでシート内全体に非表...
-
VBA 貼付先範囲(行)がいっぱ...
-
VBAで複数シート選択
-
【VBA】UserForm1の中で使うワ...
-
【WORD差し込み印刷】複数レコ...
-
VBAで複雑な構成の転記
-
エクセルVBAでの日付順のデ...
おすすめ情報