2017-01-14 9 views
0

フォーマットする必要があるピボットグラフがたくさんあります。私はVBAを初めて使いましたが、マクロを記録して、それを各チャートに使用したいと考えました。このコードでは、 "Sheet 5"をアクティブチャートに置き換えたいと考えています。誰もそれで私を助けることができますか?それが立つようVBAマクロをExcelのピボットグラフの書式シリーズに記録する

は、ここでは、コードです:

Sub ChartUp() 
' ChartUp Macro AddChartDetails Keyboard Shortcut: Ctrl+Shift+E 

ActiveSheet.ChartObjects("Chart 5").Activate 
ActiveSheet.ChartObjects("Chart 5").Activate 

ActiveChart.Axes(xlValue, xlSecondary).Select 
Selection.TickLabels.NumberFormat = "0.00%" 
Selection.TickLabels.NumberFormat = "0%" 
ActiveChart.Legend.Select 
ActiveChart.Legend.Select 
Selection.Position = xlBottom 
ActiveChart.ChartArea.Select 

ActiveSheet.Shapes("Chart 5").ScaleWidth 1.3668124563, msoFalse, _ 
    msoScaleFromTopLeft 
ActiveSheet.Shapes("Chart 5").ScaleHeight 1.3356401384, msoFalse, _ 
    msoScaleFromBottomRight 

End Sub 

答えて

1

私は私が正しくあなたのポストを理解願っています。だから私はあなたのサブ2つのパラメータ:Sht As WorksheetChtName As Stringを受け取るように更新しました。

お勧めActiveSheetから離れて、Worksheets("Sheet1")のようにワークシートを参照してください。

このソリューションをテストするために別のSub TestChartUp()を追加しました。

Option Explicit 

Sub ChartUp(Sht As Worksheet, ChtName As String) 

' ChartUp Macro AddChartDetails Keyboard Shortcut: Ctrl+Shift+E 
Dim ChtObj As ChartObject 

Set ChtObj = Sht.ChartObjects(ChtName) 

With ChtObj 
    .Chart.Axes(xlValue, xlSecondary).TickLabels.NumberFormat = "0%" 
    .Chart.Legend.Position = xlLegendPositionBottom 
End With 

With Sht.Shapes(ChtName) 
    .ScaleWidth 1.3668124563, msoFalse, msoScaleFromTopLeft 
    .ScaleHeight 1.3356401384, msoFalse, msoScaleFromBottomRight 
End With 

End Sub 

'================================================================ 

Sub TestChartUp() 

Call ChartUp(ActiveSheet, "Chart 5") '<-- I preffer not to use ActiveSheet, but "Sheet1" , etc. 

End Sub 

編集1:実際にフォーマットしたいチャートを選択する場合は、以下のSubを実行

は、以下のコードを試してみてください。

Option Explicit 

Sub ChartUp() 

' ChartUp Macro AddChartDetails Keyboard Shortcut: Ctrl+Shift+E 
Dim Sht As Worksheet 
Dim ChtObj As ChartObject 

Set Sht = ActiveSheet 
Set ChtObj = ActiveChart.Parent 

With ChtObj 
    .Chart.Axes(xlValue, xlSecondary).TickLabels.NumberFormat = "0.00%" 
    .Chart.Legend.Position = xlLegendPositionBottom 
End With 

With Sht.Shapes(ChtObj.Name) 
    .ScaleWidth 1.3668124563, msoFalse, msoScaleFromTopLeft 
    .ScaleHeight 1.3356401384, msoFalse, msoScaleFromBottomRight 
End With 

End Sub 
+0

返信ありがとうございました。そのコードは同じグラフを変更します。私は別のチャートをクリックしてマクロを実行し、記録された方法でクリックされたチャートをフォーマットできるようにしたいと考えていました。 – TiDrizA

+0

OK、別のオプションを追加して、** Edit 1 ** –

+0

のコードを試してみましょう。これはうまくいく - ありがとうShai。それでは、私がコマンドを追加したい場合(プロット領域の色を変更したり、小数点を変更するなど)、これを記録するにはどうすればよいでしょうか?それとも手動でタイプする必要があるのでしょうか? – TiDrizA

関連する問題