2016-11-22 33 views
0

以下のコードを実行しようとするとエラーが発生します。コードがピボットを作成しようとすると、なぜ最後の部分にエラーが表示されるのか説明してください。VBAでピボットテーブルを作成する際にエラーが発生しました

エラーは言う:「無効なプロシージャ呼び出しまたは引数」私はPVT

Private Sub CommandButton1_Click() 

Dim sht As Worksheet 
Dim pvtCache As PivotCache 
Dim pvt As PivotTable 
Dim StartPvt As String 
Dim SrcData As String 

For Each PT In Sheet5.PivotTables 
    PT.TableRange2.Clear 
Next PT 

'Determine the data range you want to pivot 
    SrcData = ActiveSheet.Name & "!" & Range("B7:D10").Address(ReferenceStyle:=xlR1C1) 

'Where do you want Pivot Table to start? 
    StartPvt = Sheet5.Name & "!" & Sheet5.Range("B12").Address(ReferenceStyle:=xlR1C1) 

'Create Pivot Cache from Source Data 
    Set pvtCache = ActiveWorkbook.PivotCaches.Create(_ 
    SourceType:=xlDatabase, _ 
    SourceData:=SrcData) 

MsgBox StartPvt & "_" & SrcData 

'Create Pivot table from Pivot Cache 
    Set pvt = pvtCache.CreatePivotTable(_ 
    TableDestination:=StartPvt, _ 
    TableName:="TestPivotTable") 

End Sub 
+0

エラーが発生する正確な行は何ですか?そして、エラーメッセージは何を言いますか? – rohrl77

+0

エラー:私はpvtを設定する最後の部分で "無効なプロシージャの呼び出しまたは引数"と言う。 –

答えて

2

を設定する最後の部分では、私はあなたのコードは、それが期待される文字列として格納されているSrcDataStartPvtを処理するために苦労していると思います範囲。 これはあなたのものとまったく同じですが、範囲をRangeとして保存し、必要な場合にのみ文字列に変換します。

Private Sub CommandButton1_Click() 

    Dim sht As Worksheet 
    Dim pvtCache As PivotCache 
    Dim pvt As PivotTable 
    Dim SrcData As Range, StartPvt As Range 
    Dim PT As Variant 

    For Each PT In Sheet5.PivotTables 
     PT.TableRange2.Clear 
    Next PT 

    'Determine the data range you want to pivot 
     Set SrcData = ActiveSheet.Range("B7:D10") 

    'Where do you want Pivot Table to start? 
     Set StartPvt = Sheet5.Range("B12") 

    'Create Pivot Cache from Source Data 
     Set pvtCache = ActiveWorkbook.PivotCaches.Create(_ 
     SourceType:=xlDatabase, _ 
     SourceData:=SrcData.Address) 

    MsgBox StartPvt.Parent.Name & "!" & StartPvt.Address(ReferenceStyle:=xlR1C1) & "_" & _ 
      SrcData.Parent.Name & "!" & SrcData.Address(ReferenceStyle:=xlR1C1) 

    'Create Pivot table from Pivot Cache 
     Set pvt = pvtCache.CreatePivotTable(_ 
     TableDestination:=StartPvt, _ 
     TableName:="TestPivotTable") 

End Sub 
関連する問題