Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


3086 / 13644 ツリー ←次へ | 前へ→

【64276】ピボットテーブルが作れません。 jun 10/1/29(金) 14:22 質問[未読]
【64282】Re:ピボットテーブルが作れません。 n 10/1/29(金) 19:22 発言[未読]
【64381】Re:ピボットテーブルが作れません。 jun 10/2/1(月) 11:18 質問[未読]
【64382】Re:ピボットテーブルが作れません。 n 10/2/1(月) 12:36 発言[未読]
【64383】Re:ピボットテーブルが作れません。 jun 10/2/1(月) 12:54 質問[未読]
【64385】Re:ピボットテーブルが作れません。 n 10/2/1(月) 13:02 発言[未読]
【64386】Re:ピボットテーブルが作れません。 jun 10/2/1(月) 13:09 質問[未読]
【64387】Re:ピボットテーブルが作れません。 n 10/2/1(月) 13:26 発言[未読]
【64388】Re:ピボットテーブルが作れません。 jun 10/2/1(月) 15:09 お礼[未読]

【64276】ピボットテーブルが作れません。
質問  jun  - 10/1/29(金) 14:22 -

引用なし
パスワード
   いつも、本を片手に作っておりますが
どうしてもわからないので、皆様のお知恵を貸してください。

エクセルは2007を使っています。
VBAの本に載っているサンプルを使っています。
 
Sub ピボットテーブル作成()

  'PivotCacheオブジェクトへの参照をキャッシュに代入します
  Dim キャッシュ As PivotCache
  Dim セル範囲 As Range
  Dim ws1 As Worksheet, ws2 As Worksheet
 
  Set ws1 = Worksheets(1)
  Set セル範囲 = ws1.Range("A1").CurrentRegion
 
  Set キャッシュ = ThisWorkbook.PivotCaches.Add _
    (SourceType:=xlDatabase, SourceData:=around)
  Set ws2 = Worksheets.Add(After:=ws1)
 
  'ここから実行時エラー5が出る

  キャッシュ.CreatePivotTable _
    TableDestination:=ws2.Range("A1"), TableName:="テーブル1" ', DefaultVersion:=xlPivotTableVersion10
   
  With ws2.PivotTables("テーブル1")
  '賃料*間取りのピボットを作ります
    .AddFields RowFields:="金額(万円)"   
    .AddFields ColumnFields:="タイプ"
    .PivotFields("個数/日").Orientation = xlDataField
  End With
 
End Sub

列  A    B   C   D     E      
  日付   金額 タイプ  棚    個数/日   
2008/11/20  1000  AB  071012   80 
2008/11/20  2000  AC  071118   70   
2008/11/20  3000  BC  120010   30  
2008/11/20  4000  AB  071012   36
2008/11/20  5000  BD  071015   32
2008/11/20  1000  BC  120111   150
2008/11/20  2000  CC  071019   12
2008/11/20  3000  AB  140002   58
2008/11/20  4000  AC  120232   50
2008/11/20  5000  BB  071012   16

マクロを独学でしていますので、質問に至らない点があるかもしれませんが
どうぞよろしくお願いいたします。

【64282】Re:ピボットテーブルが作れません。
発言  n  - 10/1/29(金) 19:22 -

引用なし
パスワード
   >'ここから実行時エラー5が出る
とありますが、『ここ』ってどこでしょう?
元のコードが提示通りだったら
>Set キャッシュ = ThisWorkbook.PivotCaches.Add _
>    (SourceType:=xlDatabase, SourceData:=around)
この行でエラーが出るはずです。

モジュールの先頭に
Option Explicit
と記述して、『変数の宣言を強制』していますか?

これはVBEメニュー[ツール]-[オプション]-[編集]タブで
「変数の宣言を強制する」にチェックしておくと
モジュールを追加した時に自動記述してくれます。
チェックしておく事をおすすめします。
(ヘルプ「Option Explicit ステートメント」参照のこと)

【64381】Re:ピボットテーブルが作れません。
質問  jun  - 10/2/1(月) 11:18 -

引用なし
パスワード
   n さん お返事ありがとうございます。
>>'ここから実行時エラー5が出る
>とありますが、『ここ』ってどこでしょう?
説明が不十分で申し訳ありません。
『変数の宣言を強制』は毎回するようにしています。
(本に宣言しておいた方がいいと書いてあったので)

>元のコードが提示通りだったら
>>Set キャッシュ = ThisWorkbook.PivotCaches.Add _
>>    (SourceType:=xlDatabase, SourceData:=around)
>この行でエラーが出るはずです。

この行がエラーの原因なのか、その次の

キャッシュ.CreatePivotTable _
    TableDestination:=ws2.Range("A1"), TableName:="テーブル1" , DefaultVersion:=xlPivotTableVersion10

が黄色くなってデバッグとして現れます。

お力添えをよろしくお願いいたします。

【64382】Re:ピボットテーブルが作れません。
発言  n  - 10/2/1(月) 12:36 -

引用なし
パスワード
   >『変数の宣言を強制』は毎回するようにしています。
という事は元のコードが提示通りではない、もしくは不足しているという事ですね。
SourceData:=around の『around』って何ですか?

【64383】Re:ピボットテーブルが作れません。
質問  jun  - 10/2/1(月) 12:54 -

引用なし
パスワード
   n さん、ありがとうございます。
>>『変数の宣言を強制』は毎回するようにしています。
>という事は元のコードが提示通りではない、もしくは不足しているという事ですね。
>SourceData:=around の『around』って何ですか?

特に「around」である必要はないのですが
セルの範囲を指定する(正確な説明でなかったらすみません)変数を
「around」にしてみました。

【64385】Re:ピボットテーブルが作れません。
発言  n  - 10/2/1(月) 13:02 -

引用なし
パスワード
   であれば
>Dim セル範囲 As Range
>Set セル範囲 = ws1.Range("A1").CurrentRegion
Dim around As Range
Set around = ws1.Range("A1").CurrentRegion
ではないのですか?
正しいコードが提示されないと質疑がすすみませんよ?

【64386】Re:ピボットテーブルが作れません。
質問  jun  - 10/2/1(月) 13:09 -

引用なし
パスワード
   n さん、ありがとうございます。
>であれば
>>Dim セル範囲 As Range
>>Set セル範囲 = ws1.Range("A1").CurrentRegion
>Dim around As Range
>Set around = ws1.Range("A1").CurrentRegion
>ではないのですか?
>正しいコードが提示されないと質疑がすすみませんよ?

申し訳ありません。
正直申しまして、どの範囲でコードを公開していいものかわからず
少しばかり変更して出していました。
こちらがコードそのままです。

Sub ピボットテーブル作成()

  'PivotCacheオブジェクトへの参照をキャッシュに代入します
  Dim キャッシュ As PivotCache
  Dim around As Range
  Dim ws1 As Worksheet, ws2 As Worksheet
 
  Set ws1 = Worksheets(1)
  Set around = ws1.Range("A1").CurrentRegion
 
  Set キャッシュ = ThisWorkbook.PivotCaches.Add _
    (SourceType:=xlDatabase, SourceData:=around)
  Set ws2 = Worksheets.Add(After:=ws1)
  'ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase,SourceData:=around, Version:=xlPivotTableVersion10).
 
 
  'ここから実行時エラー5が出る

  キャッシュ.CreatePivotTable _
    TableDestination:=Worksheets(1).Range("A1"), TableName:="テーブル1", DefaultVersion:=xlPivotTableVersion10
   
  With ws2.PivotTables("テーブル1")
  '賃料*間取りのピボットを作ります
    .AddFields RowFields:="賃料額(万円)"
   
    .AddFields ColumnFields:="間取タイプ"
    .PivotFields("詳細/週").Orientation = xlDataField
  End With
 
End Sub

nさん、お手数を取らせてしまい申し訳ありません。
もう少しお力添えをしていただければと思います。

【64387】Re:ピボットテーブルが作れません。
発言  n  - 10/2/1(月) 13:26 -

引用なし
パスワード
   少し落ち着かれたほうが良いと思うんですけど。
>キャッシュ.CreatePivotTable _
>  TableDestination:=Worksheets(1).Range("A1"), TableName:="テーブル1", DefaultVersion:=xlPivotTableVersion10
キャッシュ.CreatePivotTable _
  TableDestination:=ws2.Range("A1"), TableName:="テーブル1"

Worksheets(1)じゃなくてws2ですよね?
最初の提示コードでも、SourceDataがちゃんと設定してあればエラー'5'が起きる状況ではないんです。
フィールド名が違うとエラー'1004'は考えられますが。

【64388】Re:ピボットテーブルが作れません。
お礼  jun  - 10/2/1(月) 15:09 -

引用なし
パスワード
   n さん、何度もありがとうございます。

SourceDataが、どうなっているのか調べなおしてみます。
お手数をおかけしましてすみません。

3086 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free