Share via


チュートリアル : NamedRange コントロールのイベントのプログラミング


更新 : 2007 年 11 月

対象

このトピックの情報は、指定された Visual Studio Tools for Office プロジェクトおよび Microsoft Office のバージョンにのみ適用されます。

プロジェクトの種類

  • ドキュメント レベルのプロジェクト

Microsoft Office のバージョン

  • Excel 2007

  • Excel 2003

詳細については、「アプリケーションおよびプロジェクトの種類別の使用可能な機能」を参照してください。

Microsoft Office Excel ワークシートに NamedRange コントロールを追加し、Visual Studio Tools for Office を使用してそのコントロールのイベントのプログラミングを行う手順を説明します。

このチュートリアルでは、次の作業を行う方法について説明します。

  • ワークシートへの NamedRange コントロールの追加

  • NamedRange コントロールのイベントのプログラミング

  • プロジェクトのテスト

y4z68kd7.alert_note(ja-jp,VS.90).gifメモ :

次の手順で参照している Visual Studio ユーザー インターフェイス要素の一部は、お使いのコンピュータでは名前や場所が異なる場合があります。これらの要素は、使用する Visual Studio のエディションとその設定によって決まります。詳細については、「Visual Studio の設定」を参照してください。

前提条件

このチュートリアルを完了するための要件を次に示します。

  • Visual Studio Tools for Office (Visual Studio 2008 Professional および Visual Studio Team System のオプションの要素)

  • Microsoft Office Excel 2003 または Microsoft Office Excel 2007

プロジェクトの作成

この手順では、Visual Studio Tools for Office を使用して Excel ブック プロジェクトを作成します。

新しいプロジェクトを作成するには

  • My Named Range Events という名前の Excel ブック プロジェクトを作成します。[新規ドキュメントの作成] が選択されていることを確認します。詳細については、「方法 : Visual Studio Tools for Office プロジェクトを作成する」を参照してください。

    Visual Studio により、デザイナで新しい Excel ブックが開き、My Named Range Events プロジェクトがソリューション エクスプローラに追加されます。

ワークシートへのテキストと名前付き範囲の追加

ホスト コントロールは Office オブジェクトを拡張したものであり、ネイティブ オブジェクトをドキュメントに追加するのと同じ方法でドキュメントに追加できます。たとえば、Excel の NamedRange コントロールをワークシートに追加するには、[挿入] メニューの [名前] をポイントし、[定義] をクリックします。ツールボックスから NamedRange コントロールをワークシートにドラッグして追加することもできます。

この手順では、ツールボックスを使用して 2 つの名前付き範囲コントロールをワークシートに追加し、その後でワークシートにテキストを追加します。

ワークシートに範囲を追加するには

  1. Visual Studio デザイナで My Named Range Events.xls ブックを開いていて、Sheet1 が表示されていることを確認します。

  2. ツールボックスの [Excel コントロール] タブから、NamedRange コントロールを Sheet1 のセル A1 にドラッグします。

    [NamedRange コントロールの追加] ダイアログ ボックスが表示されます。

  3. 編集可能なテキスト ボックスに "$A$1" と表示され、セル A1 が選択されていることを確認します。選択されていない場合は、セル A1 をクリックして選択します。

  4. [OK] をクリックします。

    セル A1 が、namedRange1 という名前の範囲になります。ワークシート上には範囲を示す表示はありませんが、セル A1 の選択時に namedRange1 が [名前ボックス](左側のワークシートのすぐ上) に表示されます。

  5. セル B3 に、もう 1 つの NamedRange コントロールを追加します。

  6. 編集可能なテキスト ボックスに "$B$3" と表示され、セル B3 が選択されていることを確認します。選択されていない場合は、セル B3 をクリックして選択します。

  7. [OK] をクリックします。

    セル B3 が、namedRange2 という名前の範囲になります。

ワークシートにテキストを追加するには

  1. セル A1 に以下のテキストを入力します。

    This is an example of a NamedRange control.

  2. セル A3 (namedRange2 の左側) に以下のテキストを入力します。

    Events:

以下の各セクションでは、namedRange1 の BeforeDoubleClick イベント、Change イベント、および SelectionChange イベントに応答して、namedRange2 にテキストを挿入し、namedRange2 コントロールのプロパティを変更するコードを記述します。

BeforeDoubleClick イベントに応答するコードを追加するには

BeforeDoubleClick イベントに基づいて NamedRange2 にテキストを挿入するには

  1. ソリューション エクスプローラSheet1.vb または Sheet1.cs を右クリックし、[コードの表示] をクリックします。

  2. namedRange1_BeforeDoubleClick イベント ハンドラに次のようにコードを追加します。

    Private Sub NamedRange1_BeforeDoubleClick( _
        ByVal Target As Microsoft.Office.Interop.Excel.Range, ByRef Cancel As Boolean) _
        Handles NamedRange1.BeforeDoubleClick
    
        With Me.NamedRange2
            .Value2 = "The BeforeDoubleClick event occurred."
            .Font.Color = System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.Red)
            .Font.Italic = True
        End With
    End Sub
    
    private void namedRange1_BeforeDoubleClick(
        Microsoft.Office.Interop.Excel.Range Target, ref bool Cancel)
    {
        this.namedRange2.Value2 = "The BeforeDoubleClick event occurred.";
        this.namedRange2.Font.Color = System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.Red);
        this.namedRange2.Font.Italic = true;
    }
    
  3. C# では、次の Startup イベントで示すとおり、名前付き範囲のイベント ハンドラを追加する必要があります。イベント ハンドラの作成については、「方法 : Visual Studio Tools for Office でイベント ハンドラを作成する」を参照してください。

    this.namedRange1.BeforeDoubleClick += new Microsoft.Office.Interop.Excel.
        DocEvents_BeforeDoubleClickEventHandler(namedRange1_BeforeDoubleClick);   
    
    this.namedRange1.Change += new Microsoft.Office.Interop.Excel.
        DocEvents_ChangeEventHandler(namedRange1_Change);
    
    this.namedRange1.SelectionChange +=new Microsoft.Office.Interop.Excel.
        DocEvents_SelectionChangeEventHandler(namedRange1_SelectionChange);
    

Change イベントに応答するコードの追加

Change イベントに基づいて namedRange2 にテキストを挿入するには

  • NamedRange1_Change イベント ハンドラに次のようにコードを追加します。

    Private Sub NamedRange1_Change(ByVal Target As Microsoft.Office.Interop.Excel.Range) _
        Handles NamedRange1.Change
    
        With Me.NamedRange2
            .Value2 = "The Change event occurred."
            .Font.Color = System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.Blue)
            .Font.Italic = False
        End With
    End Sub
    
    private void namedRange1_Change(Microsoft.Office.Interop.Excel.Range Target)
    {
        this.namedRange2.Value2 = "The Change event occurred.";
        this.namedRange2.Font.Color = System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.Blue);
        this.namedRange2.Font.Italic = false;
    }
    
    y4z68kd7.alert_note(ja-jp,VS.90).gifメモ :

    Excel の範囲にあるセルをダブルクリックすると編集モードになるので、選択が範囲の外に移動すると、テキストは変更されていなくても Change イベントが発生します。

SelectionChange イベントに応答するコードの追加

SelectionChange イベントに基づいて namedRange2 にテキストを挿入するには

  • NamedRange1_SelectionChange イベント ハンドラに次のようにコードを追加します。

    Private Sub NamedRange1_SelectionChange(ByVal Target As Microsoft.Office.Interop.Excel.Range) _
        Handles NamedRange1.SelectionChange
    
        With Me.NamedRange2
            .Value2 = "The SelectionChange event occurred."
            .AddComment("SelectionChange always occurs before BeforeDoubleClick.")
            .Font.Color = System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.Black)
        End With
    End Sub
    
    private void namedRange1_SelectionChange(Microsoft.Office.Interop.Excel.Range Target)
    {
        this.namedRange2.Value2 = "The SelectionChange event occurred.";
        this.namedRange2.AddComment("SelectionChange always occurs before BeforeDoubleClick.");
        this.namedRange2.Font.Color = System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.Black);
    }
    
    y4z68kd7.alert_note(ja-jp,VS.90).gifメモ :

    Excel の範囲にあるセルをダブルクリックすると選択が範囲内に移動するので、BeforeDoubleClick イベントが発生する前に SelectionChange イベントが発生します。

アプリケーションのテスト

ここで、ブックをテストして、イベントが発生したときに NamedRange コントロールのイベントを示すテキストがもう 1 つの名前付き範囲に挿入されることを確認できます。

文書をテストするには

  1. F5 キーを押してプロジェクトを実行します。

  2. namedRange1 にカーソルを置き、SelectionChange イベントに関するテキストが挿入されており、ワークシートにコメントが挿入されていることを確認します。

  3. namedRange1 内をダブルクリックし、BeforeDoubleClick イベントに関するテキストが赤い斜体文字で namedRange2 に挿入されることを確認します。

  4. namedRange1 の外部をクリックし、編集モードを終了すると、テキストは変更されていなくても Change イベントが発生することを確認します。

  5. namedRange1 内のテキストを変更します。

  6. namedRange1 の外部をクリックし、Change イベントに関するテキストが青い文字で namedRange2 に挿入されることを確認します。

次の手順

このチュートリアルは、NamedRange コントロールのイベントについてプログラムを記述する際の基本事項を示しています。次に行う作業は以下のとおりです。

参照

処理手順

方法 : デザイン時に NamedRange コントロールを削除する

方法 : NamedRange コントロールのサイズを変更する

方法 : ワークシートに NamedRange コントロールを追加する

方法 : Visual Studio Tools for Office でイベント ハンドラを作成する

概念

ホスト項目とホスト コントロールの概要

NamedRange コントロール

ホスト項目およびホスト コントロールのプログラム上の制限事項

その他の技術情報

Excel のホスト コントロール