(4).処理2:株価チャートの作成
[株価チャートの作成]には「マクロの記録」を流用します。
ステップ2の[並び替え]のマクロの記録と同様に、今までの説明にない命令(ステートメント)も出てきていますが、変更が必要な箇所のみ分かれば問題ありません。
「マクロの記録」作成の準備
マクロの記録は、「C社の株価チャート」で行いますので、次の操作でシート[グラフ(C社)]を削除します。
1).シート名[グラフ(C社)]の右クリックメニューを表示し、[削除]をクリックする。
2).[削除]をクリックする。
※.必ずシート[グラフ(C社)]を削除してから、次のマクロの記録の操作をしてください。
「マクロの記録」作成
1).[開発]タブ・[マクロの記録]をクリックする。
2).「マクロ名」の変更は任意とし、[OK]をクリックする。
3).シート[グラフデータ(C社)]・セル[A1]からセル[F9]をドラッグ・[挿入]タブ・[おすすめグラフ]をクリックする。(図クリックで拡大表示)
4).[すべてのグラフ]・[株価]・[株価チャート(出来高-始値-高値-安値-終値)]・[OK]をクリックする。
5).[グラフの移動]をクリックする。(図クリックで拡大表示)
6).[新しいシート]の入力欄に[グラフ(C社)]と入力し[OK]をクリックする。
7).グラフタイトルを[C社の株価チャート]に変更する。
8).[左の軸の出来高の目盛]の右クリックメニューを表示し[軸の書式設定]をクリックする。
9).グラフの右側に次の[書式設定-1]が表示される。(図クリックで拡大表示)
出来高とローソク足が重なる部分があるため、次の操作を行う。
- 書式設定ー2:「最大値」を2倍の[240000.0]に変更するが、「最小値」が[-10000.0]になり、グラフの原点(左下)が「0」にならない。
- 書式設定ー3:「最小値」を[0.0]に変更し、グラフの原点(左下)を「0」にする。
10).横軸の「期間」をクリックし、[軸の種類]の[テキスト軸]をクリックする。(図クリックで拡大表示)
今回作成した株価チャートの集計単位は[週]のため、ここまでの操作で終了ですが、集計単位が[月]の場合の横軸(期間)は、「年月日」ではなく「年月」表示のほうが望ましいと思いますので、次からの操作もこのマクロの記録の中に入れておきます。
11).右の[スクロールバー]を下に動かし、[表示形式]をクリックし更に[スクロールバー]を下に動かし、[種類]のドロップダウンリストを表示する。(図クリックで拡大表示)
12).[2012年3月]を選択(クリック)する。(図クリックで拡大表示)
横軸の値の表示が「年月」に変更されます。[週]単位の表示としては意味がないかもしれませんが、この後のVBAプログラムで使用します。
13).[軸の書式設定]を[×]で閉じる。(図クリックで拡大表示)
14).[開発]タブ・[記録終了]をクリックする。
以上の操作で[マクロの記録]が終了しましたので、次の操作でVBAを確認しましょう。
「マクロの記録」確認
1).[マクロ]をクリックする。
2).上記(2)-2)で指定した[マクロ名](この場合は[Macro2])を選択し、[編集]をクリックする。
3).[標準モジュール]・[Module6]([Module5]の場合もあり)に、プロシージャ[Sub Macro2 ~ End Sub]が表示される。(このマクロはモジュール[マクロ_Step3_株価チャート]にも入っています)(図クリックで拡大表示)
[会社:C社、集計単位:週]を作成条件とした上記VBAの内容は、次の通りで非常に長いVBAになっていますが、全てを理解する必要はありません。
このVBAの[会社]・[集計単位]に関係する命令を「変数」に変更すれば、他の作成条件でも利用可能になりますので、赤字の部分に注目しましょう。
Sub Macro2()
'
' Macro2 Macro
'
Range("A1:F9").Select
ActiveSheet.Shapes.AddChart2(322, xlStockVOHLC).Select
ActiveChart.SetSourceData Source:=Range("'グラフデータ(C社)'!$A$1:$F$9")
ActiveChart.Location Where:=xlLocationAsNewSheet, Name:="グラフ(C社)"
ActiveChart.ChartArea.Select
ActiveChart.ChartTitle.Select
ActiveChart.ChartTitle.Text = "C社の株価チャート"
Selection.Format.TextFrame2.TextRange.Characters.Text = "C社の株価チャート"
With Selection.Format.TextFrame2.TextRange.Characters(1, 9).ParagraphFormat
.TextDirection = msoTextDirectionLeftToRight
.Alignment = msoAlignCenter
End With
With Selection.Format.TextFrame2.TextRange.Characters(1, 1).Font
.BaselineOffset = 0
.Bold = msoFalse
.NameComplexScript = "+mn-cs"
.NameFarEast = "+mn-ea"
.Fill.Visible = msoTrue
.Fill.ForeColor.RGB = RGB(89, 89, 89)
.Fill.Transparency = 0
.Fill.Solid
.Size = 14
.Italic = msoFalse
.Kerning = 12
.Name = "+mn-lt"
.UnderlineStyle = msoNoUnderline
.Spacing = 0
.Strike = msoNoStrike
End With
With Selection.Format.TextFrame2.TextRange.Characters(2, 8).Font
.BaselineOffset = 0
.Bold = msoFalse
.NameComplexScript = "+mn-cs"
.NameFarEast = "+mn-ea"
.Fill.Visible = msoTrue
.Fill.ForeColor.RGB = RGB(89, 89, 89)
.Fill.Transparency = 0
.Fill.Solid
.Size = 14
.Italic = msoFalse
.Kerning = 12
.Name = "+mn-lt"
.UnderlineStyle = msoNoUnderline
.Spacing = 0
.Strike = msoNoStrike
End With
ActiveChart.Axes(xlValue).Select
ActiveChart.Axes(xlValue).MaximumScale = 240000
ActiveChart.Axes(xlValue).MinimumScale = 0
ActiveChart.Axes(xlCategory).Select
ActiveChart.Axes(xlCategory).CategoryType = xlCategoryScale
Selection.TickLabels.NumberFormatLocal = "yyyy""年""m""月"";@"
Application.CommandBars("Format Object").Visible = False
End Sub
上記の白い枠内について、Characters(1, 1)とCharacters(2, 8)以外は同じ内容ですね。この部分を一つにまとめることも考慮して、上記赤字部分を変更することにより、処理2のVBAを完成させます。