2016-08-23 8 views
0

は、私は次のコードを持っている:それはシート(「株式」)になるとマクロに他のブックのシートが表示されませんか?

Dim StartCell3 As Range 
Dim DataRange3 As Range 


Set StartCell3 = Range("A1") 
Set DataRange3 = StartCell3.CurrentRegion 

DataRange3.Select 

    ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:=DataRange3, Version:=xlPivotTableVersion15).CreatePivotTable _ 
     TableDestination:="Stocks!R1C6", TableName:="PivotTable8", DefaultVersion _ 
     :=xlPivotTableVersion15 
    Sheets("Stocks").Select 
    Cells(1, 6).Select 
    With ActiveSheet.PivotTables("PivotTable8").PivotFields("Material") 
     .Orientation = xlRowField 
     .Position = 1 
    End With 
    ActiveSheet.PivotTables("PivotTable8").AddDataField ActiveSheet.PivotTables(_ 
     "PivotTable8").PivotFields("Unrestricted"), "Sum of Unrestricted", xlSum 
    Range("F6").Select 
    With ActiveSheet.PivotTables("PivotTable8") 
     .ColumnGrand = False 
     .RowGrand = False 
    End With 

を選択し、それが範囲エラー外の添字を与えます。モジュールで作業している間は何のエラーも出ませんが、マクロが有効なブックを作成し、このマクロを割り当てたボタンを挿入しました。

主な問題は、私の作成したマクロから、作業用コードが通常このブックのコードセクションにあることです。したがって、シート1のみを持ち、シート2またはその他のシート名を持っていません。なぜそれはエラーを出すのですか?なぜワークブックは他のワークブックを認識できないのですか?

答えて

0

マクロを実行しているワークブックのシート「在庫」はありますか?例えば

あなたはそれがであるワークブックいるExcelを伝える必要がありますない場合

:。

Workbooks("name of workbook where the sheet is").Activate 
Sheets("Stocks").Select 

あなたが、これは予想外の実行時間を引き起こす可能性として、活性化させるかを選択し使用することをお勧めしませんが、エラー。以下を参照してください:How to avoid using Select in Excel VBA macros

+0

私はすでにSheets( "Stocks")まで動作するコードで、いくつかの操作を行う前にそれを有効にしました。 これは、マクロを実行するブックで作成したモジュールからマクロを実行するときに機能します。しかし、他の誰かにExcelを送信すると、モジュールとコードも含まれますが、ボタンから実行しようとすると「マクロを実行できません.......」 – hakandeep

+0

このヘルプトピックを参照してくださいこれにより、有効なコンテンツを選択してマクロを有効にしていないような問題が解決された場合。 [https://support.microsoft.com/en-us/kb/930076] –

+0

私は有効にしましたが、それは問題ではありませんでしたが、あなたの助けに感謝します – hakandeep

関連する問題