Excel VBA 部品化
様々なプログラムで共通してつかえる部分を部品化して流用できるようにしてみます。例えば、グラフ表示するプログラムです。
Excel VBA 部品化 円グラフの共通部品化
円グラフを部品化するために設定すべきインターフェイスをまず考えます。以下の項目が必要と思われます。
- グラフ名
- タイトル設定
- 表示位置(Top)
- 表示位置(左位置)
- 幅
- 高さ
- レンジ範囲(データ領域)
Excel VBA 部品化 円グラフの共通部品 標準モジュール
円グラフを作成・表示させるプログラムを独立させて他の異なるプログラムでも使用できるように設定します。例えば標準モジュールに以下のように作成します。
Excel VBA 部品化 円グラフの共通部品 ソースリスト
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
Option Explicit Public Sub AddChart1(ByVal Cart_X As String, ByVal w_Title As String, ByVal w_Top As Long, ByVal w_Left As Long, ByVal w_Width As Long, ByVal w_High As Long, ByVal w_Area As String) Dim ChartObj As Object If ActiveSheet.ChartObjects.Count = 0 Then Else ActiveSheet.ChartObjects("Chart1").Activate Selection.Delete End If With ActiveSheet.Shapes.AddChart.Chart ChartType = Cart_X .SetSourceData Range(w_Area) 'レンジ範囲:データ行から最終行取得まで End With Set ChartObj = ActiveSheet.ChartObjects(1) With ChartObj .Name = "Chart1" 'グラフの名前を設定 .Top = w_Top '表示位置 .Left = w_Left '表示位置 .Width = w_Width '幅 .Height = w_High '高さ With .Chart .HasTitle = True 'タイトル設定 .ChartTitle.Text = w_Title 'タイトル文字列 With .ChartTitle.Format.TextFrame2.TextRange.Font .Size = 10 'タイトル文字サイズ .Fill.ForeColor.ObjectThemeColor = 6 'タイトル文字色 End With .HasLegend = True '凡例表示 .Legend.Position = xlLegendPositionRight '凡例表示位置(右側) With ChartObj.Chart.Legend.Format.Fill .Visible = msoTrue '塗りつぶし設定 .ForeColor.RGB = RGB(217, 217, 217) '色指定 End With End With End With End Sub |
標準モジュールに共通部品(CommonPartPrg)としてPublic Subで作成・登録します。以下のように呼び出すプログラムから各項目を設定すると円グラフ作成プログラムに反映されます。
1 2 3 4 5 6 7 8 9 10 11 |
Dim w_Title, w_ChartX, w_Area As String Dim w_Top, w_Width, w_High, w_Left As Long w_Title = "構成比率" w_Top = 140 w_Left = 600 w_Width = 225 w_High = 200 w_ChartX = xl3DPie '3次元円グラフ'' ''ChartX = xlPie '=円グラフ w_Area = ("J2:K7") Call AddChart1(w_ChartX, w_Title, w_Top, w_Left, w_Width, w_High, w_Area) |
Excel VBA 部品化 円グラフの共通部品 円グラフ反映
まとめ
- まず共通部品化するプログラムを厳選します。共通部品化の有効性を検討します。
- インターフェイス部分を調整します。汎用性をもたせるように調整する必要があります。
- 標準モジュールにパブリックサブルーチン(Public Sub)として作成・登録します。パブリックでないと他のサブルーチンからCallしても認識されません。
- 結果確認します。今回の例は印刷処理時に円グラフを表示させるものでした。
- 次回は棒グラフの共通部品化するプログラムを作ってみたいと思います。