チュートリアル : オプション ボタンを使用してワークシートのグラフを更新する方法
このチュートリアルでは、Microsoft Office Excel ワークシートでオプション ボタンを使用してオプションをすばやく切り替える際の基本事項について説明します。ここでは、グラフのスタイルを変更するオプションを扱います。
対象: このトピックの情報は、Excel 2013 と Excel 2010 のドキュメント レベルのプロジェクトに適用されます。詳細については、「Office アプリケーションおよびプロジェクト タイプ別の使用可能な機能」を参照してください。
この結果として完成したサンプルについては、「Office 開発のサンプルとチュートリアル」の Excel コントロールのサンプルを参照してください。
このチュートリアルでは、次の作業について説明します。
ワークシートへのオプション ボタン グループの追加
オプション選択時のグラフ スタイルの変更
[!メモ]
次の手順で参照している Visual Studio ユーザー インターフェイス要素の一部は、お使いのコンピューターでは名前や場所が異なる場合があります。これらの要素は、使用する Visual Studio のエディションとその設定によって決まります。詳細については、「Visual Studio の設定」を参照してください。
必須コンポーネント
このチュートリアルを実行するには、次のコンポーネントが必要です。
-
Microsoft Office Developer Tools が含まれているエディションの Visual Studio 2012。詳細については、「[Office ソリューションを開発できるようにコンピューターを構成する](bb398242\(v=vs.110\).md)」を参照してください。
- Excel 2013 または Excel 2010。
ワークシートへのグラフの追加
既存のブックをカスタマイズする Excel ブック プロジェクトを作成できます。このチュートリアルでは、ブックにグラフを追加し、そのブックを新しい Excel ソリューションで使用します。このチュートリアルで使用するデータ ソースは、Data for Chart という名前のワークシートです。
データを追加するには
Microsoft Excel を開きます。
[Sheet3] タブを右クリックし、ショートカット メニューの [名前の変更] をクリックします。
シートの名前を Data for Chart に変更します。
次のデータを Data for Chart に追加します。このとき、左上隅がセル A4、右下隅がセル E8 となるようにします。
Q1
Q2
Q3
Q4
西
500
550
550
600
東
600
625
675
700
北
450
470
490
510
南
800
750
775
790
次に、最初のワークシートにグラフを追加してデータを表示します。
Excel でグラフを追加するには
[挿入] タブの [グラフ] グループで、[縦棒] をクリックし、[すべてのグラフの種類] をクリックします。
[グラフの挿入] ダイアログ ボックスで、[OK] をクリックします。
[デザイン] タブの [データ] で、[データの選択] をクリックします。
[データ ソースの選択] ダイアログ ボックスの [グラフ データの範囲] ボックス内でクリックし、既定の選択をクリアします。
Data for Chart シートで、A4 を左上隅とし E8 を右下隅とする、数値を含んだセル ブロックを選択します。
[データ ソースの選択] ダイアログ ボックスで、[OK] をクリックします。
グラフの位置を右上隅がセル E2 と揃うように調節します。
ドライブCし、それを **[ExcelChart.xlsx]**に示すように、ファイルを保存します。
Excel を終了します。
新規プロジェクトの作成
この手順では、ExcelChart ブックに基づく Excel ブック プロジェクトを作成します。
新しいプロジェクトを作成するには
My Excel Chart という名前の Excel ブック プロジェクトを作成します。ウィザードで、[既存のドキュメントをコピーする] をクリックします。
詳細については、「方法: Visual Studio で Office プロジェクトを作成する」を参照してください。
[参照] のボタンをクリックし、このチュートリアルの前半で作成したブックに移動します。
[OK] をクリックします。
Visual Studio により、デザイナーで新しい Excel ブックが開き、My Excel Chart プロジェクトがソリューション エクスプローラーに追加されます。
グラフのプロパティの設定
既存のブックを使用する新しい Excel ブック プロジェクトを作成すると、そのブック内にあるすべての名前付き範囲、リスト オブジェクト、およびグラフについて自動的にホスト コントロールが作成されます。Chart コントロールの名前は、[プロパティ] ウィンドウを使用して変更できます。
Chart コントロールの名前を変更するには
デザイナーで Chart コントロールを選択し、[プロパティ] ウィンドウで以下のプロパティを変更します。
プロパティ
価値
名前
dataChart
HasLegend
false
コントロールの追加
このワークシートでは、オプション ボタンを使用して、ユーザーがグラフのスタイルをすばやく変更できるようにします。ただし、オプション ボタンは一度に 1 つしか選択できないことが必要です。これは、1 つのボタンを選択した場合、同時にグループ内の他のボタンを選択できないことを意味します。ワークシートに複数のオプション ボタンを追加した場合、既定でこのような動作にはなりません。
この動作を実現する方法の 1 つとして、オプション ボタンを 1 つのユーザー コントロールにグループ化し、そのユーザー コントロールのコードを作成して、ユーザー コントロールをワークシートに追加することがあります。
ユーザー コントロールを追加するには
ソリューション エクスプローラーで My Excel Chart プロジェクトを選択します。
[プロジェクト] メニューの [新しい項目の追加] をクリックします。
[新しい項目の追加] ダイアログ ボックスで [ユーザー コントロール] をクリックし、コントロールに ChartOptions という名前を指定して、[追加] をクリックします。
ユーザー コントロールにオプション ボタンを追加するには
デザイナーでユーザー コントロールが非表示になっている場合は、ソリューション エクスプローラーで ChartOptions をダブルクリックします。
[ツールボックス] の [コモン コントロール] タブから [Radio Button] コントロールをユーザー コントロールにドラッグし、以下のプロパティを変更します。
プロパティ
価値
名前
columnChart
テキスト
Column Chart
2 番目のオプション ボタンをユーザー コントロールに追加し、以下のプロパティを変更します。
プロパティ
価値
名前
barChart
テキスト
Bar Chart
3 番目のオプション ボタンをユーザー コントロールに追加し、以下のプロパティを変更します。
プロパティ
価値
名前
lineChart
テキスト
Line Chart
4 番目のオプション ボタンをユーザー コントロールに追加し、以下のプロパティを変更します。
プロパティ
価値
名前
areaBlockChart
テキスト
Area Block Chart
次に、オプション ボタンがクリックされたときにグラフを更新するコードを記述します。
オプション ボタンが選択されたときのグラフ スタイルの変更
次に、グラフ スタイルを変更するコードを追加します。これを行うには、ユーザー コントロールにパブリック イベントを作成し、選択の種類を設定するプロパティを追加し、各オプション ボタンの CheckedChanged イベントにイベント ハンドラーを作成します。
ユーザー コントロールのイベントおよびプロパティを作成するには
ソリューション エクスプローラーでユーザー コントロールを右クリックし、[コードの表示] をクリックします。
SelectionChanged イベントと Selection プロパティを作成するコードを ChartOptions クラスに追加します。
Public Event SelectionChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Private selectedType As Microsoft.Office.Interop.Excel.XlChartType = _ Microsoft.Office.Interop.Excel.XlChartType.xlColumnClustered Public Property Selection() As Microsoft.Office.Interop.Excel.XlChartType Get Return Me.selectedType End Get Set(ByVal value As Microsoft.Office.Interop.Excel.XlChartType) Me.selectedType = value End Set End Property
public event EventHandler SelectionChanged; private Microsoft.Office.Interop.Excel.XlChartType selectedType = Microsoft.Office.Interop.Excel.XlChartType.xlColumnClustered; public Microsoft.Office.Interop.Excel.XlChartType Selection { get { return this.selectedType; } set { this.selectedType = value; } }
オプション ボタンの CheckedChanged イベントを処理するには
areaBlockChart オプション ボタンの CheckedChanged イベント ハンドラーでグラフの種類を設定し、イベントを発生させます。
Private Sub areaBlockChart_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) _ Handles areaBlockChart.CheckedChanged If (CType(sender, RadioButton).Checked) Then Me.selectedType = Microsoft.Office.Interop.Excel.XlChartType.xlAreaStacked RaiseEvent SelectionChanged(Me, EventArgs.Empty) End If End Sub
private void areaBlockChart_CheckedChanged(object sender, EventArgs e) { if (((RadioButton)sender).Checked) { this.selectedType = Microsoft.Office.Interop.Excel.XlChartType.xlAreaStacked; if (this.SelectionChanged != null) { this.SelectionChanged(this, EventArgs.Empty); } } }
barChart オプション ボタンの CheckedChanged イベント ハンドラーで、グラフの種類を設定します。
Private Sub barChart_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) _ Handles barChart.CheckedChanged If (CType(sender, RadioButton).Checked) Then Me.selectedType = Microsoft.Office.Interop.Excel.XlChartType.xlBarClustered RaiseEvent SelectionChanged(Me, EventArgs.Empty) End If End Sub
private void barChart_CheckedChanged(object sender, EventArgs e) { if (((RadioButton)sender).Checked) { this.selectedType = Microsoft.Office.Interop.Excel.XlChartType.xlBarClustered; if (this.SelectionChanged != null) { this.SelectionChanged(this, EventArgs.Empty); } } }
columnChart オプション ボタンの CheckedChanged イベント ハンドラーで、グラフの種類を設定します。
Private Sub columnChart_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) _ Handles columnChart.CheckedChanged If (CType(sender, RadioButton).Checked) Then Me.selectedType = Microsoft.Office.Interop.Excel.XlChartType.xlColumnClustered RaiseEvent SelectionChanged(Me, EventArgs.Empty) End If End Sub
private void columnChart_CheckedChanged(object sender, EventArgs e) { if (((RadioButton)sender).Checked) { this.selectedType = Microsoft.Office.Interop.Excel.XlChartType.xlColumnClustered; if (this.SelectionChanged != null) { this.SelectionChanged(this, EventArgs.Empty); } } }
lineChart オプション ボタンの CheckedChanged イベント ハンドラーで、グラフの種類を設定します。
Private Sub lineChart_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) _ Handles lineChart.CheckedChanged If (CType(sender, RadioButton).Checked) Then Me.selectedType = Microsoft.Office.Interop.Excel.XlChartType.xlLineMarkers RaiseEvent SelectionChanged(Me, EventArgs.Empty) End If End Sub
private void lineChart_CheckedChanged(object sender, EventArgs e) { if (((RadioButton)sender).Checked) { this.selectedType = Microsoft.Office.Interop.Excel.XlChartType.xlLineMarkers; if (this.SelectionChanged != null) { this.SelectionChanged(this, EventArgs.Empty); } } }
C# では、オプション ボタンのイベント ハンドラーを追加する必要があります。このコードを ChartOptions コンストラクターの InitializeComponent の呼び出しの後に追加できます。イベント ハンドラーの作成方法については、「方法: Office プロジェクトでイベント ハンドラーを作成する」を参照してください。
public ChartOptions() { InitializeComponent(); areaBlockChart.CheckedChanged += new EventHandler(areaBlockChart_CheckedChanged); barChart.CheckedChanged += new EventHandler(barChart_CheckedChanged); columnChart.CheckedChanged += new EventHandler(columnChart_CheckedChanged); lineChart.CheckedChanged += new EventHandler(lineChart_CheckedChanged); }
ワークシートへのユーザー コントロールの追加
ソリューションをビルドすると、新しいユーザー コントロールは自動的にツールボックスに追加されます。このコントロールは、[ツールボックス] からワークシートにドラッグできます。
ユーザー コントロールをワークシートに追加するには
[ビルド] メニューの [ソリューションのビルド] をクリックします。
ChartOptions ユーザー コントロールがツールボックスに追加されます。
ソリューション エクスプローラーで Sheet1.vb または Sheet1.cs を右クリックし、[デザイナーの表示] をクリックします。
ツールボックスから ChartOptions コントロールをワークシートにドラッグします。
my_Excel_Chart_ChartOptions1 という名前の新しいコントロールがプロジェクトに追加されます。
コントロールの名前を ChartOptions1 に変更します。
グラフの種類の変更
グラフの種類を変更するには、ユーザー コントロールで選択されたオプションに基づいてスタイルを設定するイベント ハンドラーを作成します。
ワークシートに表示されるグラフの種類を変更するには
Sheet1 クラスに以下のイベント ハンドラーを追加します。
Private Sub ChartOptions1_SelectionChanged(ByVal sender As Object, ByVal e As System.EventArgs) _ Handles ChartOptions1.SelectionChanged Try dataChart.ChartType = Me.ChartOptions1.Selection Catch ex As Exception MessageBox.Show(ex.Message) End Try End Sub
private void ChartOptions1_SelectionChanged(object sender, EventArgs e) { try { dataChart.ChartType = this.ChartOptions1.Selection; } catch (Exception ex) { MessageBox.Show(ex.ToString()); } }
C# では、次に示すように、ユーザー コントロールのイベント ハンドラーを Startup イベントに追加する必要があります。イベント ハンドラーの作成方法については、「方法: Office プロジェクトでイベント ハンドラーを作成する」を参照してください。
this.ChartOptions1.SelectionChanged += new EventHandler(ChartOptions1_SelectionChanged);
アプリケーションのテスト
ブックをテストして、オプション ボタンを選択したときにグラフのスタイルが正しく設定されることを確認できます。
ブックをテストするには
F5 キーを押してプロジェクトを実行します。
各種のオプション ボタンを選択します。
選択に合わせてグラフ スタイルが変更されることを確認します。
次の手順
このチュートリアルでは、ワークシートでオプション ボタンとグラフ スタイルを使用するときの基本事項について説明します。次に行う作業は以下のとおりです。
プロジェクトの配置。詳細については、「Office ソリューションの配置」を参照してください。
ボタンを使用したテキスト ボックスへのデータの読み込み。詳細については、「チュートリアル : ボタンを使用してワークシート内テキスト ボックスにテキストを表示する方法」を参照してください。
チェック ボックスを使用したワークシートの書式の変更。詳細については、「チュートリアル : CheckBox コントロールを使用したワークシート書式の変更」を参照してください。