2017-12-11 79 views
0

をスローし、私は私が間にフィルタしようとしています日時列を持っているにかかわらず、私はそれをフォーマットしようとどのように私はエクセルVBA xlDateBetweenは、アプリケーション定義またはオブジェクト定義のエラー

実行時エラーを取得していない「1004」

Option Explicit 

Sub filterDate() 
''' Manually filters a datetime range ''' 
Dim hourly_picks As Worksheet 
Dim pickCount As PivotTable 
Dim picked_at As PivotField 
Dim beginDate As Date 
Dim endDate As Date 



' set variables 
Set hourly_picks = ThisWorkbook.Sheets("Hourly Pick Count by Employee") 
Set pickCount = hourly_picks.PivotTables("PivotTable2") 
Set picked_at = pickCount.PivotFields("picked_at") 
beginDate = Format(hourly_picks.Range("L2").Value, "M/d/yyyy h:mm:ss") 
endDate = Format(hourly_picks.Range("S2").Value, "M/d/yyyy h:mm:ss")  

' clear all filters then filter by picked_at range 

pickCount.ClearAllFilters 
picked_at.PivotFilters.Add Type:=xlDateBetween, Value1:=beginDate, Value2:=endDate 

End Sub 

マイbeginDateendDateから入力された:アプリケーション定義またはオブジェクト定義のエラーここ

は私のコードですユーザーは現在12/6/2017 23:01:0012/7/2017 7:30:00の値を持っています。 MsgBoxまたはDebug.Printを使用して変数をチェックすると、12/6/2017 11:01:00 PM12/7/2017 7:30:00 AMとなります。データは、PostgreSQLデータベースから、mm/dd/yyyy h:mm:ssという形式で取得されます。 filter列をpicked_atからday_picked(mm/dd/yyyyのみを示す日付)に変更すると問題はありません。

beginDate/endDateのフォーマットに問題がありますか? picked_atの形式をどのように優れたものにしているかを正確にどのように伝えることができますか?

+0

'Debug.Print TypeName(hourly_picks.Range(" L2 ")。Value)'を実行すると、 'String'または' Date'を取得しますか? –

+0

1004エラーはどの行にありますか? – Vityata

+0

xlDateBetween行でエラーが発生します。以下のコードは、以下を出力します:String、Date; Debug.Print(TypeName(hourly_picks.Range( "L2")。Value)) Debug.Print(TypeName(beginDate)) – egood

答えて

0

更新:問題は.Add方法や私の引数のフォーマット/データ型とではありません。ピボットテーブルのフィルタセクションにあるピボットフィールドをフィルタリングしようとしました。 フィルタセクションのピボットフィールドをフィルタリングする唯一の方法は、各ピボットアイテムをループし、VisibilityをTrueまたはFalseに設定することです。私のピボットフィールドは17Kピボットアイテムを上回っているので、これは私にとっては解決策ではないので、別の方法を見つけなければなりません。

さらに、.Addを使用していることがこの問題を調査したところ、.Add2を使用していたはずです。私が見つけたものから、.Add2はすべて2013年以降のExcelバージョンです。

関連する問題