|
マクロ初心者です。
ActiveChartの書式をActiveSheet内の全グラフに反映させる
マクロを作成いたしましたが、
マクロ処理完了後、Excelの動作が停止してしまいます。
VBAのフローに不備がございましたら、教えていただければ幸いです。
【使用PCスペック】
OS:windows10
CPU:Core(TM)i3-6100U CPU @2.30GHz
RAM:4GB
【VBA内容】
縦軸と横軸の最大最小値、目盛りの間隔は元の状態を維持したい為、
1.ActiveChartのコピー
2.For文開始
3.各グラフの残したい縦横軸の設定値を変数に格納
4.各グラフにActiveChartの書式をコピー
5.各グラフに変数に格納した縦横軸設定値を反映
6.For文終了
といった処理を行っています。
【処理結果】
・ActiveSheet内のグラフの書式は狙ったとおりに反映される
・各グラフの結果を確認する為に、Excelをいじっていると
10秒程度たった後に動作が停止する
【VBA】
----------------------------------------
Sub グラフ書式の統一()
Dim objChart As Object
Dim x_MinScale As Single
Dim x_MaxScale As Single
Dim y_MinScale As Single
Dim y_MaxScale As Single
Dim x_MjrUnit As Single
Dim y_MjrUnit As Single
On Error GoTo ErrorHandler
If ActiveChart Is Nothing Then
MsgBox "基準となるグラフを選択した状態で実行してください"
Exit Sub
End If
'基準となるグラフのコピー(後に書式を貼り付け)
ActiveChart.ChartArea.Copy
'全てのチャートにおいて、"縦横軸の設定保持⇒基準グラフの書式貼り付け⇒元の縦横軸の設定に戻す"を繰り返す
For Each objChart In ActiveSheet.ChartObjects
'貼り付け先のグラフの横軸の設定を取得
With objChart.Chart.Axes(xlCategory)
x_MinScale = .MinimumScale
x_MaxScale = .MaximumScale
x_MjrUnit = .MajorUnit
End With
'貼り付け先のグラフの縦軸の設定を取得
With objChart.Chart.Axes(xlValue)
y_MinScale = .MinimumScale
y_MaxScale = .MaximumScale
y_MjrUnit = .MajorUnit
End With
'基準となるグラフの書式を貼り付け
objChart.Select
ActiveSheet.PasteSpecial Format:=2
'保持していた元の横軸設定を反映
With objChart.Chart.Axes(xlCategory)
.MinimumScale = x_MinScale
.MaximumScale = x_MaxScale
.MajorUnit = x_MjrUnit
End With
'保持していた元の縦軸設定を反映
With objChart.Chart.Axes(xlValue)
.MinimumScale = y_MinScale
.MaximumScale = y_MaxScale
.MajorUnit = y_MjrUnit
End With
Next
''''''
ErrorHandler:
Exit Sub
'''''''
End Sub
-----------------------------------------------------
|
|