種ヶ島

いろいろなエッセイを書いてます。

エクセルのマクロで、グラフのタイトルと軸の名前を入力して効率化


スポンサーリンク

Excel VBA マクロで、グラフを選択してから、タイトルと軸ラベルを順番に入力フォームで入力できるようにしました。マクロを使うとエクセルの『戻る』は使用できませんので注意して下さい。

コードは下の方に書いてあります。

 

必要の無い部分は、削除するか、コードの先頭に ’ を書いて下さい。Excel2007で使っています。他のバージョンでも使えると思います。

 

グラフを作製したら、タイトルや軸ラベルを入力することになりますが、
グラフツール → レイアウト → グラフタイトル、軸ラベル
というように、何回も選択しなければなりません。

 

正直、時間がもったいないと思います。 

そこで、作製したグラフを『選択』した状態で、マクロを実行すると入力フォームが出てきて、
タイトル→y軸→x軸の順に入力することで、グラフにタイトルが表示されるようなマクロを作りました。

  • マクロを記入する個人用マクロブック Personalを作製します。
  • PersonalのModule(モジュール)に下記のコードをコピーします。 
  • エクセルで、データからグラフを作製します。
  • そのグラフを『選択』した状態で、マクロを実行します。
  • タイトル→y軸→x軸の順に入力フォームが出てくるので、キーボードで入力するか、文字の書いてあるセルをマウスで選択してもフォームに入力できます。
  • もし、マクロのエラーが出たら『終了』でお願いします。 

 コードを変更すれば、グラフサイズ、プロットエリアの色、タイトルや凡例などの、フォントの大きさや種類などは、各自で使いやすいように調整できます。

必要の無い部分は削除するか、コードの先頭に ’ を書いて下さい。

 

' ←コード中の半角アポストロフィ(半角シフト7)の左側に書かれた文字はプログラムとして動きませんのでコメントを書いてあります。

 

エクセルのマクロで、数値の単位を簡単に設定する - 種ヶ島

お役に立てたら幸いです。


スポンサーリンク

   

Sub graphtitle()

'2013-12-15
' グラフのタイトルと軸ラベルを入力フォームを作製 セルをクリックしても、入力しても良い
' 文字の大きさは、タイトル12 凡例10 その他9
'2014-01-31 行&列の幅を変更してもグラフの大きさを変えない
'2016-12-06 タイトルを「表示」にして、タイトルのテキストを取得して、入力フォームのデフォルトに設定する

 

Dim title0 As String
Dim yaxis0 As String
Dim xaxis0 As String

Dim title As String
Dim yaxis As String
Dim xaxis As String


'選択したグラフのタイトルを取得
With ActiveChart

'タイトルを表示する
ActiveChart.SetElement (msoElementChartTitleAboveChart)
ActiveChart.SetElement (msoElementPrimaryValueAxisTitleRotated)
ActiveChart.SetElement (msoElementPrimaryCategoryAxisTitleAdjacentToAxis)
ActiveChart.SetElement (msoElementLegendRight)


'タイトルを取得する
title0 = ActiveChart.ChartTitle.Text
yaxis0 = ActiveChart.Axes(xlValue, xlPrimary).AxisTitle.Characters.Text
xaxis0 = ActiveChart.Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text
End With

 

'インプットボックス defaultに取得したタイトルを設定
title = Application.InputBox(prompt:="タイトル セルを選択 又は 入力", title:="グラフのタイトル", Type:=2, Default:=title0)
yaxis = Application.InputBox(prompt:="縦軸 y セルを選択 又は 入力", title:="縦軸 y", Type:=2, Default:=yaxis0)
xaxis = Application.InputBox(prompt:="横軸 x セルを選択 又は 入力", title:="横軸 x", Type:=2, Default:=xaxis0)

 

'インプットボックスで入力した値をタイトルに指定
With ActiveChart
.HasTitle = True
.ChartTitle.Characters.Text = title

.Axes(xlValue, xlPrimary).HasTitle = True
.Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = yaxis

.Axes(xlCategory, xlPrimary).HasTitle = True
.Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = xaxis

End With

 

ActiveChart.ChartArea.Select '最初にグラフの文字の大きさを指定、目盛りと軸ラベルなど
With Selection.Font
.Name = "MS Pゴシック"
.FontStyle = "標準"
.Size = 10
End With

 

ActiveChart.PlotArea.Select 'プロットエリアを25%灰色
With Selection.Interior
.ColorIndex = 15
End With

 

ActiveChart.Legend.Font.Size = 11 '凡例の文字の大きさを指定

 

ActiveChart.ChartTitle.Select 'タイトルの調整には、このコードを追加する
With Selection.Font
.Name = "MS Pゴシック"
.Size = 12
End With

 

Dim ch As ChartObject 'グラフのサイズを指定
Set ch = ActiveChart.Parent
ch.Height = 184
ch.Width = 340


'行&列の幅を変更してもグラフの大きさを変えない
With ActiveSheet.DrawingObjects
.Placement = xlMove
.PrintObject = True
End With


End Sub