- ベストアンサー
ExcelVBAピボットテーブル作成時の範囲指定について(再)
お世話になります。ピポッドテーブルを作成する際に対象とする範囲を選択しますがその範囲指定を、 「A1からレコードの存在する一番右下まで」というように指定したいのですがどのように記述したらよいのでしょうか? ネット上で検索をして下記のコードを見つけました、 Sub ListSelect5() Dim 最下行番号 As Long,右端列番号 As Integer Worksheets("Sheet1").Select 最下行番号=Cells(ActiveSheet.Rows.Count, 1).End(xlUp).Row 右端列番号=Cells(1,ActiveSheet.Columns.Count).End(xlToLeft).Column Range(Cells(1,1),Cells(最下行番号,右端列番号)).Select End Sub このサンプルを流用すれば最下・最右のセルの位置を求めることが出来るのはわかりましたが、 それをピポッドテーブル作成のロジックに当てはめることが出来ません。 本来であればじっくりと勉強したいところですが時間がなく皆さんにご助力いただきたい次第です。 下記が使用したいピポッドテーブル作成のマクロです。 ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _ "SheetAAA!R1C1:R4643C5").CreatePivotTable TableDestination:="", _ TableName:="ピボットテーブル1", DefaultVersion:=xlPivotTableVersion10 ActiveSheet.PivotTableWizard TableDestination:=ActiveSheet.Cells(3, 1) ActiveSheet.Cells(3, 1).Select ... ... ... End Sub 上記の、R1C1:R4643C5を右上から右下までという指定をしたいのです。 ご助力ください。よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
こんばんは。 通常は、ソースデータなどに、当てるときは、以下のようにしたらよいと思います。 Dim SrcData As String SrcData = ActiveSheet.Range("A1").CurrentRegion.Address(, , False) ・ ・ SourceData:= SrcData _ ・ ただし、ピボットテーブルのAdd メソッドは、オブジェクトが、一度きりですから、あまり使われないはずです。 それから、 掲示されたマクロについては、 Dim lngRow As Long Dim intCol As Integer With Worksheets("Sheet1") lngRow = .Cells(65536, 1).End(xlUp).Row intCol = .Cells(1,256).End(xlToLeft).Column .Range(.Cells(1,1),.Cells(lngRow,intCol)).Select End With ということにはなりますが、抜ける可能性があるので、 私などは、このようなエラー回避オプションをつけます。 多少、上記のマクロとは意味が違いますが、実際に連続したデータの範囲を取る場合は、以下のようにします。UsedRange のような最下行・最右列の取り方をすると、データのない中間のセルまで、範囲を取ってしまう可能性があります。 Sub RngTest() Dim myAddress As String With ActiveSheet If WorksheetFunction.Count(.Range("A1").CurrentRegion) = 0 Then MsgBox "データがありません。", vbCritical Exit Sub Else myAddress = .Range("A1").CurrentRegion.Address(, , False) ' .Range("A1").CurrentRegion.Select End If End With End Sub
その他の回答 (1)
- taocat
- ベストアンサー率61% (191/310)
こんにちは。 "SheetAAA!R1C1:R4643C5" これを "SheetAAA!R1C1:R" & 最下行番号 & "C" & 右端列番号 としてみたらどうでしょう。 このように変数を利用する場合は、""(ダブルクォーテーション)の中に入れず、&で結合します。 以上です。