次の方法で共有


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

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

対象: このトピックの情報は、Excel 2013 と Excel 2010 のドキュメント レベルのプロジェクトに適用されます。詳細については、「Office アプリケーションおよびプロジェクト タイプ別の使用可能な機能」を参照してください。

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

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

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

  • プロジェクトのテスト

[!メモ]

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

必須コンポーネント

このチュートリアルを実行するには、次のコンポーネントが必要です。

-

Microsoft Office Developer Tools が含まれているエディションの Visual Studio 2012。詳細については、「[Office ソリューションを開発できるようにコンピューターを構成する](bb398242\(v=vs.110\).md)」を参照してください。
  • Excel 2013 または Excel 2010。

プロジェクトの作成

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

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

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

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

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

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

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

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

  1. [My Named Range Events.xlsx] ブックがVisual Studioのデザイナーで開かれ、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 イベントで示すとおり、名前付き範囲のイベント ハンドラーを追加する必要があります。イベント ハンドラーの作成については、「方法: 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;
    }
    

    [!メモ]

    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);
    }
    

    [!メモ]

    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 コントロールを追加する

方法: Office プロジェクトでイベント ハンドラーを作成する

概念

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

拡張オブジェクトによる Excel の自動化

NamedRange コントロール

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