【会員アンケートご協力のお願い】抽選で計5名様に役立つ書籍をプレゼント!
即効テクニック |
サンプルでは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行目をデータとして '取得し、位置次元配列に変換 DCat = Application.WorksheetFunction.Transpose(Dat.Columns(1)) DValue = Application.WorksheetFunction.Transpose(Dat.Columns(2)) With Me.ChartSpace1 Set MyChart = .Charts.Add 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