電子書籍の厳選無料作品が豊富!

変数を使用したオートフィルタの絞り込み

Dim f1 As string,f2 As string

f1 = Sheet1.Range(“I14”).Value ‘日付
f1 = Sheet1.Range(“F14”).Value ‘部署

Range(“A11”).AutoFilter Fie
ld:2,Criteria1:=f2
Range(“A11”).AutoFilter Field:1,Criteria1:=f1

上記プログラムについて
部署は絞れましたが日付が出来ませんでした。

※I14の参照先のセルの書式設定は日付で
種類は✳︎2001/3/14でした。
※Excel2010です。

どうしたらよいでしょうか?教えて下さい。

ご不明点ありましたら補足します。

よろしくお願いします。

質問者からの補足コメント

  • 何もなりませんでした。
    後、入力ミスがありました。部署のところはf2です。
    よろしくお願いします。

      補足日時:2018/09/27 12:35

A 回答 (2件)

こんばんは。


今、私のところのマクロで同じ現象が置きています。
理屈では、目で見える検索と内部の検索で、違いが生じているのかということです。

f2 = Sheet1.Range(“I14”).Value ‘日付 (訂正後)
別のシートから持ってくるということですね。

こちらの資料でやってみます。
変数や書き方は、あくまでも、私のプログラム上で使われているもので、特に従う必要はありません。*/**の部分だけの変更でよいと思います。

'//
Sub SortProgram()
Dim DataArea As Range
Dim sh As Worksheet
Dim f2 As Variant '* Variant 型のほうが扱いやすい
f2 = Sheet1.Range(“I14”).Value ‘日付
Set sh = ActiveSheet
With sh
.AutoFilterMode = False
Set DataArea = .Range("A11").CurrentRegion
DataArea.AutoFilter _
field:=1, _
Criteria1:= Format(f2, "yyyy/m/d") '**ここの部分です。
'この後に続く
End With
End Sub

おそらく、オートフィルター上の書式と、クライテリア部分の書式とをあわせて
文字列の代入して上げればよいような気がします。(こちらでは、これが成功しています。)

しかし、内部でシリアル値になっているのか、そうでないのかは、表計算上の数式バーでは区別が付きません。当面、この方法で試してみるしかないと思います。毎回ルーチンで使うものには、判定プログラムをつける必要はないと思います。
    • good
    • 0

f1 = Sheet1.Range(“I14”).Value ‘日付



日付をf2にいれたらどうなりますか?
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!