2016-08-31 12 views
0

私は2セルから抽出した範囲で自分の日付のオートフィルタを調整しようとしています。日付範囲のオートフィルタとしてセル値を使用

一部は試行を失敗した後、私は自分のコードにadustし、それを微調整することができるようにマクロビルダーでマクロを行うことを決めた、と私は終わった:

Dim fI As Range 
Dim fF As Range 

Set fI = Worksheets("Sheet1").Range("B26") 

Set fF = Worksheets("Control").Range("B27") 


    ActiveSheet.ListObjects("TABLE_REPORTS_GENERAL_INFO").Range _ 
     .AutoFilter Field:=24, Criteria1:=fI.Value, Operator:=xlAnd, _ 
     Criteria2:=fF.Value 

日付が正しい形式でありますしかし、フィルターをきれいにするだけです。日付のハードコーディングが機能していますが、何が間違っていますか?

マイ日付構造:

Starting Date 01/08/2015 
Last Date 31/07/2016 

答えて

0

あなたはfechaFinに2番目の範囲を割り当てているが、後であなただけfFを使用するので、このようなあなたの範囲を割り当ててみてください。今fF.ValueがあるのでSet fF = Worksheets("Control").Range("B27")

空の文字列。フィルタをリセットする可能性があります。

1

あなたはDMYの日付形式になっています。私はその地域の基準にしたがって努力します。

データ型の配列をCriteria2として使用します。

With ActiveSheet 
    With .ListObjects("TABLE_REPORTS_GENERAL_INFO") 
     .Range.AutoFilter Field:=13, Operator:=xlFilterValues, _ 
      Criteria2:=Array(2, Format(fi.Value, "d/m/yyyy"), 2, Format(ff.Value, "d/m/yyyy")) 
    End With 
End With 

これは、2つの日付をフィルタリングする必要があります。ただし、開始日と終了日の間のすべての日付を使用する場合は、演算子を導入する必要があります。

With ActiveSheet 
    With .ListObjects("TABLE_REPORTS_GENERAL_INFO") 
     .Range.AutoFilter Field:=13, _ 
      Criteria1:=Format(fi.Value, "\>\=d/m/yyyy"), Operator:=xlAnd, _ 
      Criteria2:=Format(ff.Value, "\<\=d/m/yyyy") 
    End With 
End With 
+1

日付間の使用については正しいですが、 '<'(例えば 'フォーマット(今は" <= d/m/yyyy ")')をエスケープする必要があると思います。私が '= d/m/yyyy8/31/2016 1:48:12 am' –

+0

を返した直後のウィンドウで 'format(Now、" <= d/m/yyyy ")'をテストしたとき、これはエラーを投げます。レンジのオートフィルタをオフにします。 – Pablo

+0

@ThomasInzina - それをキャッチするためにありがとう、私はオペレータとその同等者を逃げ切った。 – Jeeped

関連する問題