ピボットテーブル完成後の最終行の取得をVBAで
エクセル2003です。
あるデータからピボットテーブルを
作成し完成後、それの一部分を別シートに転記し
その後ピボットテーブルを削除する構文を作成しました。
●最終行 = .Cells(.Rows.Count, 1).End(xlUp).Row
の部分でエラーです。
・実行時エラー438
・オブジェクトは、このプロパディまたはメソッドをサポートしていません。
この実行文のオブジェクトは
ActiveSheet.PivotTables("ピボットテーブル1")
でこれがサポートをしていないという事でしょうか?
範囲が変動するデータを基にピボットテーブル作成時は
マクロの記録で作成した構文では対応できないので
書換えて対応出来たのですが
ピボットテーブルが完成すると基のデータと
最終行、列がかわります。
そこにも同じ仕組みを入れたつもりですが駄目でした。
ピボットテーブル作成後の最終行の行番号の取得方法を教えて下さい。
変数 最終行に代入したいです。お願いします。
Sub 編集転記削除()
Dim 範囲行
Dim 範囲列
Dim 範囲
Dim シート名
Dim 最終行
Dim 着手日
With Sheets("基データ")'基データのデータ範囲を取得
範囲行 = .Cells(.Rows.Count, 1).End(xlUp).Row
範囲列 = .Cells(1, Columns.Count).End(xlToLeft).Column
End With
範囲 = "基データ!R1C1:R" & 範囲行 & "C" & 範囲列
ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:=範囲) _
.CreatePivotTable TableDestination:="", TableName:="ピボットテーブル1", _
DefaultVersion:=xlPivotTableVersion10
ActiveSheet.PivotTableWizard TableDestination:=ActiveSheet.Cells(3, 1)
ActiveSheet.Cells(3, 1).Select
'新規挿入されたシート名が変動するので変数に代入
シート名 = ActiveSheet.Name
With ActiveSheet.PivotTables("ピボットテーブル1")
.PivotFields("順番").Orientation = xlRowField
.PivotFields("製造番号").Orientation = xlRowField
.PivotFields("品名").Orientation = xlRowField
.PivotFields("納期").Orientation = xlRowField
.PivotFields("数量").Orientation = xlRowField
.PivotFields("品番").Orientation = xlRowField
.PivotFields("順番").Subtotals(1) = False
.PivotFields("製造番号").Subtotals(1) = False
.PivotFields("品名").Subtotals(1) = False
.PivotFields("納期").Subtotals(1) = False
.PivotFields("数量").Subtotals(1) = False
.PivotFields("品番").Subtotals(1) = False
.ColumnGrand = False
.RowGrand = True
'●ここでエラーになる↓
最終行 = .Cells(.Rows.Count, 1).End(xlUp).Row
Range(Range("B5"), Cells(最終行, 5)).Copy
Sheets("リスト").Range("B4").PasteSpecial Paste:=xlPasteValues
Range(Range("F5"), Cells(最終行, 6)).Copy
Sheets("リスト").Range("A4").PasteSpecial Paste:=xlPasteValues
End With
’ピボットテーブルを削除
Application.DisplayAlerts = False
Sheets(シート名).Delete
Application.DisplayAlerts = True
End Sub