昔は (Visual Studio pkg の一部として) vb を使用していましたが、新しい仕事では、サイド プロジェクトの一部として VBA を少し使用する必要があります。私は初心者のボートのストレートだとは言いませんが、以前に行ったことの多くをまだ再学習しています (言うまでもなく、VB を学習していたときに触れられなかった Excel 固有のビットを組み込むことは言うまでもありません)ビジュアルスタジオで)
私はすでに別のプロジェクトで vba を介していくつかのピボット テーブルを作成しましたが、現在、特定のプロジェクトで困惑しています。
VBA Excel リファレンス ブックに記載されているピボット テーブルの一部のコードを再利用してきましたが、今のところ問題なく動作しています。しかし、この特定のワークブックでは、いくつかの変数を渡しながら関数を呼び出すワークシートのボタンが押されます。通常はすべてうまくいきますが、キャッシュを作成しようとすると、不一致エラーがあるというエラーが表示されます。私の理解では、ピボット キャッシュを作成するときに文字列とバリアントをソース データとして渡すことができますが、以前に以下のコードを何度か繰り返したので、今まで問題はありませんでした。
Private Function createPivotTable(ByRef sheetName As Variant, ByVal sheetNum As Integer)
Dim DataRange As Range
Dim pivotTableCache As PivotCache
Dim pivotTableReport As PivotTable
ActiveWorkbook.Worksheets("EXAMPLE SHEET").Activate
Range("A1").Select
Set DataRange = Selection.CurrentRegion
Worksheets.Add.Name = sheetName
Set pivotTableCache = ActiveWorkbook.PivotCaches.Create(xlDatabase, _
SourceData:=DataRange)
Set pivotTableReport = pivotTableCache.createPivotTable(TableDestination:=ActiveWorkbook.Worksheets(sheetName).Range("A1"), _
TableName:="PVR")
....
だから私は本質的に立ち往生しています。ここで同様の問題を回避する別のスレッドを見つけました。最も評価の高いコメントは、範囲の場所に沿って文字列として渡したときに不一致がなくなったという点で、1 つの問題を解決しましたが、実際のテーブル自体を作成しようとすると、1004 エラーが発生し続けました。複数のデータ行を選択する必要があること (私が解釈できるものから-悲しいことに、エラーコードのメッセージボックスが行を切り取っていますが、これはちょっとおかしいです)。しかし、再確認したところ、選択は実際にテーブル全体 (6 列すべてと 1000 行) を取得します。
助けや正しい方向への指摘をいただければ幸いです。
*検証します; ユーザーにワークシートに名前を付けるように求める入力ボックスを使用するため、文字列ではなくバリアントとして sheetName を渡します。フェイル セーフとして、入力ボックスのハンドルをバリアントとして指定すると、ユーザーがワークシートをキャンセルしたかどうかを確認できます。操作 (空白文字列の代わりに false の値を返します)。