VBA Step3

(5).[Module3]の内容

実際のVBAの内容を説明しますが、「マクロの記録」を変更した部分は次の通り分けています。
 変更前:赤枠・黄色の背景
 変更後:オレンジ枠・背景色なし
VBAを枠で囲んだり調整をしていますが、[Module3]と同じ内容で約110行、説明は灰色の背景色の枠内に記述しています。

'Module3-1

Option Explicit

'変数の宣言を強制する

 

'Module3-2
Sub サンプル_ステップ3_A()

'変数の宣言

Dim gyouSuu As Long
Dim wkTitle As String
Dim wkMojisuu As Long
Dim wkScale As Long

'行数
'グラフタイトル
'タイトルの文字数
'目盛

このプロシージャで使う変数を宣言しています。

'処理1:シート[グラフデータ(x社)]の行数(データ数)をカウント
Sheets(pbSheetName).Select
gyouSuu = ActiveSheet.Range("a1").CurrentRegion.Rows.Count
If gyouSuu = 1 Then
 MsgBox "株価データがありませんので、再度確認してください"
 pbError = 1
 Exit Sub
End If

シート[グラフデータ(x社)]の[gyouSuu](行数)をカウントし、データ数が[1](一行目の項目のタイトルのみ)の場合、ダイアログボックスに「株価データがありませんので、確認してください」と表示、[pbError(エラー判定項目)]に[1](エラーあり)をセット後に、このプロシージャでの処理を[Exit Sub]で終了します。
選択するシートは違いますが、「ステップ2・処理1」と同じ方式です。

次の[処理2]は、「(4).処理2:株価チャートの作成のマクロの記録」を流用しています。

'処理2:株価チャートの作成(マクロの記録を流用)
'(1).グラフ用データ範囲の選択

' Range("A1:F9").Select

Range(Cells(1, 1), Cells(gyouSuu, 6)).Select

セル[A1]をCells(1, 1)、セル[F9]の[F]を[6]・[9]を変数[gyouSuu]に変更

'(2).グラフの種類選択
 ActiveSheet.Shapes.AddChart2(322, xlStockVOHLC).Select

[AddChart2]は、Excel2013以降で動作します。

'(3).グラフ用データ範囲のセット

' ActiveChart.SetSourceData Source:=Range("'グラフデータ(C社)'!$A$1:$F$9")

ActiveChart.SetSourceData Source:=Sheets(pbSheetName).Range(Cells(1, 1), Cells(gyouSuu, 6))

[Range("'グラフデータ(C社)'!$A$1:$F$9")]を[Sheets(pbSheetName).Range(Cells(1, 1), Cells(gyouSuu, 6))]に変更

 

'(4).シート名を[グラフ(x社)]に変更

' ActiveChart.Location Where:=xlLocationAsNewSheet, Name:="グラフ(C社)"

ActiveChart.Location Where:=xlLocationAsNewSheet, Name:=pbChartName

シート名["グラフ(C社)"]をパブリック変数[pbChartName]に変更

 ActiveChart.ChartArea.Select
 ActiveChart.ChartTitle.Select

 

'(5).グラフタイトル名の設定

wkTitle = pbKaisya & "の株価チャート"

「グラフタイトル名」を変数[WkTitle]にセット

' ActiveChart.ChartTitle.Text = "C社の株価チャート"

ActiveChart.ChartTitle.Text = wkTitle

グラフタイトル名["C社の株価チャート"]を変数[wkTitle]に変更

' Selection.Format.TextFrame2.TextRange.Characters.Text = "C社の株価チャート"

Selection.Format.TextFrame2.TextRange.Characters.Text = wkTitle

グラフタイトル名["C社の株価チャート"]を変数[wkTitle]に変更

 

'(6).グラフタイトルの文字数の設定

' With Selection.Format.TextFrame2.TextRange.Characters(1, 9).ParagraphFormat

wkMojisuu = Len(wkTitle)
With Selection.Format.TextFrame2.TextRange.Characters(1, wkMojisuu).ParagraphFormat

グラフタイトル名の文字数を変数[wkTitle]にセットし、文字数が固定される[9]を変数[wkMojisuu]に変更

.TextDirection = msoTextDirectionLeftToRight
.Alignment = msoAlignCenter
End With

 

'(7).グラフタイトルの文字の書式設定

'---【グラフタイトルの書式-1(開始)】⇒【書式-2に統合】---
'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
'---【グラフタイトルの書式-1(終了)】⇒【書式-2に統合】---

上記【グラフタイトルの書式-1】は、次の【グラフタイトルの書式-2】に統合するため、全てをコメント行にする

'---【グラフタイトルの書式-2(開始)】---

' With Selection.Format.TextFrame2.TextRange.Characters(2, 8).Font

 With Selection.Format.TextFrame2.TextRange.Characters(1, wkMojisuu).Font

Characters(1, 1)と.Characters(2, 8)を、Characters(1, wkMojisuu)に変更

  .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
'---【グラフタイトルの書式-2(終了)】---

 

'(8).左の縦軸(出来高)の書式設定
 ActiveChart.Axes(xlValue).Select
' 境界値・最大値を2倍に変更

'  ActiveChart.Axes(xlValue).MaximumScale = 240000

 wkScale = ActiveChart.Axes(xlValue).MaximumScale
 ActiveChart.Axes(xlValue).MaximumScale = 2 * wkScale

「最大値」を変数[WkScale]にセットし、2倍にする

' 境界値・最小値を[0]に変更
 ActiveChart.Axes(xlValue).MinimumScale = 0

 

'(9).横軸(期間)の書式設定
 ActiveChart.Axes(xlCategory).Select
 ActiveChart.Axes(xlCategory).CategoryType = xlCategoryScale

 

'(10).集計単位が[月]の場合、横軸(期間)の書式を[yyyy年mm月]に設定

' Selection.TickLabels.NumberFormatLocal = "yyyy""年""m""月"";@"

 If pbSyuukeiTani = "月" Then
  Selection.TickLabels.NumberFormatLocal = "yyyy""年""m""月"";@"
 End If

IF文を入れ、集計単位が[月]の場合に、「年月」型に書式を変更

 

'(11).軸(出来高)の書式設定を閉じる
 Application.CommandBars("Format Object").Visible = False
End Sub

 

それでは、[標準モジュール]・[実習用_ステップ3]を使い実習を行いましょう。
以上で、ステップ3に関する説明を終り、次章では、ステップ1・2・3を一連の処理としてまとめます。

 

 
  このエントリーをはてなブックマークに追加

 

スポンサーリンク