戻る    次へ

Hamsterお買い物リストメール送信家計簿のアイコン画像VBA Hamster編

【1】ユーザフォームで棒グラフを描く

ワークシートにグラフを描いてその画像をユーザフォームに貼り付ける手も考えたが、いい手を見つけたのでこちらを採用しました。 Office 2000 Web Chart コンポーネント APIを使用すると結構楽に実現できましたが、EXCEL2007でActiveX初期化警告メッセージが 出るようになるのは誤算でした。
さて、とりあえず簡単な棒グラフを書く例を示します。ツールボックスのその他コントロールで Microsoft Office Chart 9.0をユーザフォームに貼り付けます。処理の概要は、まずデータを1次元配列でChartSpace1へ渡す必要があります。 他にはDBレコードセットやカンマ区切りのデータでも渡せるとのこと。残念ながら2次元配列はエラーなります。グラフの要素を 系列名、項目名、各系列のデータをセットしたテーブルをSetDataメソッド等で渡すだけです。後で気づきましたが、系列数が 多い場合は一旦2次元配列に格納してChartSpace1へ渡す直前に1次元配列にコピーして渡すこともできます。
'以下ユーザフォームに記述
Option Explicit

Private Sub UserForm_Initialize()
'■データを作成
  Dim T系列名(1)
  Dim T項目名(3)
  Dim T系列data1(3)
  Dim T系列data2(3)

  T系列名(0) = "支出"
  T系列名(1) = "収入"

  T項目名(0) = "1月"
  T項目名(1) = "2月"
  T項目名(2) = "3月"
  T項目名(3) = "4月"

  T系列data1(0) = 100
  T系列data1(1) = 120
  T系列data1(2) = 140
  T系列data1(3) = 150

  T系列data2(0) = 150
  T系列data2(1) = 160
  T系列data2(2) = 170
  T系列data2(3) = 180
  
'■データをチャートへ設定
  Dim MyChart
  Dim SCol1, SCol2
  Dim C定義
  
  '定数を参照設定
  Set C定義 = ChartSpace1.Constants
  ' 凡例の表示を表示する
  ChartSpace1.HasChartSpaceLegend = True
  ' Chartspace1 にグラフを追加します。
  Set MyChart = ChartSpace1.Charts.Add
  ' 折れ線グラフを指定する。
  MyChart.Type = C定義.chChartTypeColumnClustered
  ' グラフに系列名データを渡す。
  MyChart.SetData C定義.chDimSeriesNames, C定義.chDataLiteral, T系列名
  ' グラフに項目名データを渡す。
  MyChart.SetData C定義.chDimCategories, C定義.chDataLiteral, T項目名
  ' グラフに系列データ1を渡す。
  Set SCol1 = MyChart.SeriesCollection(0)
  SCol1.SetData C定義.chDimValues, C定義.chDataLiteral, T系列data1
  ' グラフに系列データ1を渡す。
  Set SCol2 = MyChart.SeriesCollection(1)
  SCol2.SetData C定義.chDimValues, C定義.chDataLiteral, T系列data2

End Sub

棒グラフ
棒グラフのアイコン画像

  戻る    次へ

掲載情報

2009.1.20にフリーソフトであるGriffinEXCELテーブルとVBA2htmlが紹介された本が発売されました。この本のP99にHTML関連として紹介されています。