アプリ版:「スタンプのみでお礼する」機能のリリースについて

下記のマクロでグラフを自動描画しています。
この中で、いくつかの点で自分の思うような描画ができていません。今は、描画後に手動にて対応していますが、できることならその手間を省きたく思っています。

・系列名は不要
・縦軸、横軸のフォントサイズを指定したい
・データラベルが「0(ゼロ)」の場合は表示しない

何しろマクロ初心者なものです。ご教示をお願いします。


Sub グラフ作成()
With ActiveSheet.Shapes.AddChart.Chart
.ChartType = xlColumnClustered
.SetSourceData Range("V5:W49")
End With

Dim i As Long
With ActiveSheet.ChartObjects(1).Chart
For i = 1 To .SeriesCollection.Count
.SeriesCollection(i).HasDataLabels = True
Next i
End With
With ActiveSheet.ChartObjects(1).Chart
.HasTitle = True
.ChartTitle.Characters.Text = Range("W2") & "製造年別グラフ"
With .ChartTitle.Format.TextFrame2.TextRange.Font
.Size = 6
.Fill.ForeColor.ObjectThemeColor = msoThemeColorAccent2
End With
With .Axes(xlCategory, xlPrimary) '---主軸項目軸
.HasTitle = True '---軸ラベル表示
.AxisTitle.Text = "製造年" '---軸ラベル文字列設定
.AxisTitle.Font.Size = 4
End With
With .Axes(xlValue, xlPrimary) '---主軸数値軸
.HasTitle = True '---軸ラベル表示
.AxisTitle.Text = "数量" '---軸ラベル文字列設定
.AxisTitle.Font.Size = 4
End With
End With
End Sub

A 回答 (1件)

グラフ挿入直後に操作しているのですから


ActiveSheetのChartObjectsの引数を1と決め打ちするより
★1、ActiveSheetのChartObjectsのCount値を引数にした方が間違いがありません。
オブジェクト変数に入れる方法もありますが次ステップとして後で研究してください。

>・系列名は不要
★2、Nameプロパティで設定

>・データラベルが「0(ゼロ)」の場合は表示しない
★3、NumberFormatLocalプロパティで表示形式を設定
0以下の場合は、"[<=0]"""""

>・縦軸、横軸のフォントサイズを指定したい
★4、TickLabelsオブジェクトのFont.Sizeプロパティで設定

With ActiveSheet
With .ChartObjects(.ChartObjects.Count).Chart '★1

For i = 1 To .SeriesCollection.Count
With .SeriesCollection(i)
.Name = "" '★2
.HasDataLabels = True
.DataLabels.NumberFormatLocal = "[=0]""""" '★3
End With
Next i

With .Axes(xlCategory, xlPrimary) '---主軸項目軸
.TickLabels.Font.Size = 18 '---軸目盛ラベル '★4
End With
With .Axes(xlValue, xlPrimary) '---主軸数値軸
.TickLabels.Font.Size = 18 '---軸目盛ラベル '★4
End With
End With
End With
    • good
    • 0
この回答へのお礼

このたびも、大変お世話になりました。

自分が思っていたことが、ご教示いただいたものでできるようになりました。
このことをきっかけに、グラフの大きさの変更もなんとかできるようになり非常に喜んでおります。
エクセルでの繰り返し作業では、マクロが非常に有効なのでこれからも牛歩くらいですが前に進んで行きたいと思います。

また是非とも、わからないことが多々あると思いますのでご教示をお願いします。

本当に助かりました。

お礼日時:2014/04/17 07:56

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!