2017-07-31 19 views
2

私のコードに問題があります。私はVBAボタンで開始日と終了日を選択したい。VBA Excelで開始日 - 終了日を選択してください

これは私のコードです。誰かが私を助けることができますか?ありがとうございました...

(私の悪い英語のために申し訳ありません)

マイコード:

Sub CARI() 
Dim objname As String 
Dim jumpv As Integer 
Dim I As Integer 
Dim S1 As Date 
Dim S2 As Date 

Application.DisplayAlerts = False 
Application.ScreenUpdating = False 

Sheets("Dashboard").Select 
objname = Cells(5, 5).Value 
S1 = Cells(6, 4).Value 
S2 = Cells(6, 9).Value 
jumpv = 4 

Worksheets("PV").Activate 
For I = 4 To jumpv 
    Application.StatusBar = "Loading.. (" & Round(I/jumpv * 100, 0) & ")%" 

     Sheets("PV").Select 
     ActiveSheet.PivotTables("PV" & I).PivotFields("REGION").ClearAllFilters 
     ActiveSheet.PivotTables("PV" & I).PivotFields("REGION").CurrentPage = objname 
     ActiveSheet.PivotTables("PV" & I).PivotFields("DAY").ClearAllFilters 
     ActiveSheet.PivotTables("PV" & I).PivotFields("DAY").PivotFilters.Add _ 
     Type:=xlDateBetween, Value1:=S1, Value2:=S2 
     ActiveSheet.PivotTables("PV" & I).PivotFields("DAY").AutoSort _ 
     xlAscending, "DAY" 
Next I 
Sheets("Dashboard").Select 
Application.StatusBar = "" 
MsgBox "Done!" 
End Sub 

capture PV table

+2

"私は私のコードを持ついくつかの問題を持っている">何問題ですか?あなたが持っている特定のエラーはありますか? –

+0

エラー "ワークシートクラスのピボット可能プロパティを取得できません。" .PivotTables( "PV"&I).PivotFields( "REGION")。ClearAllFilters –

答えて

1

コメントとしてコード内の説明を、以下のコードを試してみてください。

Option Explicit 

Sub CARI() 

Dim objname As String 
Dim jumpv As Integer 
Dim I As Integer 
Dim S1 As Date 
Dim S2 As Date 

Application.DisplayAlerts = False 
Application.ScreenUpdating = False 

With Sheets("Dashboard") ' <-- use With instead of Activate or Select the sheet 
    objname = .Cells(5, 5).Value 
    S1 = .Cells(6, 4).Value 
    S2 = .Cells(6, 9).Value 
End With 

jumpv = 4 

With Worksheets("PV") 
    For I = 4 To jumpv 
     Application.StatusBar = "Loading.. (" & Round(I/jumpv * 100, 0) & ")%" 

     .PivotTables("PV" & I).PivotFields("REGION").ClearAllFilters 
     .PivotTables("PV" & I).PivotFields("REGION").CurrentPage = objname 
     .PivotTables("PV" & I).PivotFields("DAY").ClearAllFilters 

     ' when filtering dates, safest way is to covert to Double (their actual value, not their format) 
     .PivotTables("PV" & I).PivotFields("DAY").PivotFilters.Add _ 
       Type:=xlDateBetween, Value1:=CDbl(S1), Value2:=CDbl(S2) 
     .PivotTables("PV" & I).PivotFields("DAY").AutoSort xlAscending, "DAY" 
    Next I 
End With 

Sheets("Dashboard").Select 

Application.StatusBar = "" 
Application.DisplayAlerts = True 
Application.ScreenUpdating = True 
MsgBox "Done!" 

End Sub 
+0

あなたの答えはありがたいですが、まだこのコードでデバッグしています .PivotTables( "PV"&I).PivotFields( "REGION")。 ClearAllFilters –

+0

@SeptianaFajrinあなたは 'PivotField'という名前の" REGION "を持っていますか?あなたのスペルを確認してください(余分なスペース) –

+0

はい、ワークシート "PV"に "REGION"という名前のピボットフィールドがあります。 –

関連する問題