Office Web Componetをユーザフォームで使う - ChartSpaceコントロール
サンプルでは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

Excel2000 ※Office2000



戻る


Excel Word Access VBA! モーグ