サンプルではOffice Web Componet(OWC)のうち、ChartSpaceコントロールを
ユーザフォーム上で使用し、チャートを作成します。
ChartSpaceコントロールのチャートはデータ ソースにSpreadSheet,DataSource,
など他のOWCコントロールを指定するほか、コンマ区切りデータや1次元配列から
作成できます。
※DataSourceTypeの種類
chDataSourceTypePivotlist
chDataSourceTypeRecordset
chDataSourceTypeSpreadsheet
chDataSourceTypeUnknown
(OWC ChartSpaceControlを使用可能にするには)
VBEでユーザフォームが選択された状態で”ツール”メニューから”その他の
コントロール”をクリック、”コントロールの追加”ダイアログで、
”Microsoft Office Chart 9.0”を選択して”OK”。”ツールボックスに”
表示されたアイコンを通常のコントロールと同様ユーザフォームにドラッグ&
ドロップで貼り付けてください。
1.ワークシート上のデータを配列に取得してチャートを作成
(前提)ユーザフォーム、ChartSpaceコントロール
Private Sub UserForm_Initialize()
Dim MyChart As WCChart
Dim Dat As Range
Dim DCat As Variant, DValue As Variant
Dim SCol As WCSeries
Set Dat = ActiveSheet.Cells(1, 1).CurrentRegion
Set Dat = Dat.Offset(1).Resize(Dat.Rows.Count - 1)
'アクティブシートのデータ範囲1行目を系列名、2行目をデータとして
'取得し、1次元配列に変換
DCat = Application.WorksheetFunction.Transpose(Dat.Columns(1))
DValue = Application.WorksheetFunction.Transpose(Dat.Columns(2))
With Me.ChartSpace1
Set MyChart = .Charts.Add
End With
With MyChart
'データ系列の追加
Set SCol = .SeriesCollection.Add
.Type = chChartTypeLine '折れ線グラフの指定
'Chartオブジェクトに対して項目名をセット
.SetData chDimCategories, chDataLiteral, DCat
'Seriesオブジェクトに対してデータのセット
.SeriesCollection(SCol.Index).SetData _
chDimValues, chDataLiteral, DValue
'※SetDataメソッド(Dimension, DataSourceIndex, DataReference)
' DataSourceIndexにchDataLiteralを指定した時1次元配列、
' またはコンマ区切りデータを指定できます
End With
End Sub
2.ユーザフォーム上にSpreadSheetコントロールを配置して
チャートのDataSourceに指定
(前提)ユーザフォーム、ChartSpaceコントロール、SpreadSheetコントロール
Private Sub UserForm_Initialize()
Dim MyChart As WCChart
Dim Dat As Range
Dim OWCRng As OWC.Range
Dim Addr As String
'グラフのもとデータをアクティブシートから取得
Set Dat = ActiveSheet.Cells(1, 1).CurrentRegion
Addr = Dat.Address(False, False)
'SpreadSheetコントロールにデータセット
Set OWCRng = Spreadsheet1.ActiveSheet.Range(Addr)
OWCRng.Value = Dat.Value
With Me.ChartSpace1
'チャートのデータソースをSpreadSheetコントロールに設定
Set ChartSpace1.DataSource = Spreadsheet1
Set MyChart = .Charts.Add
With MyChart
.Type = chChartTypeLine '折れ線グラフ
'SpredSheetコントロール上のデータ範囲を指定して項目、データをセット
.SetData chDimCategories, 0, OWCRng.Columns(1).Address
.SeriesCollection(0).SetData chDimValues, 0, OWCRng.Columns(2).Address
End With
End With
End Sub
|