こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

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を右上から右下までという指定をしたいのです。
ご助力ください。よろしくお願いします。

投稿日時 - 2006-02-01 13:28:53

QNo.1936103

すぐに回答ほしいです

質問者が選んだベストアンサー

こんばんは。

通常は、ソースデータなどに、当てるときは、以下のようにしたらよいと思います。

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

投稿日時 - 2006-02-02 03:36:58

ANo.2

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.1

こんにちは。


"SheetAAA!R1C1:R4643C5"

これを

"SheetAAA!R1C1:R" & 最下行番号 & "C" & 右端列番号

としてみたらどうでしょう。

このように変数を利用する場合は、""(ダブルクォーテーション)の中に入れず、&で結合します。

以上です。
 
 

投稿日時 - 2006-02-01 14:56:31

あなたにオススメの質問