逐步解說:針對 NamedRange 控制項的事件進行程式設計

本逐步解說示範如何將 NamedRange 控制項加入至 Microsoft Office Excel 工作表,並使用 Visual Studio 中的 Office 開發工具對其事件進行程式設計。

**適用於:**本主題中的資訊適用於 Excel 2007 和 Excel 2010 的文件層級專案。如需詳細資訊,請參閱依 Office 應用程式和專案類型提供的功能

在瀏覽這份逐步解說期間,您將了解如何:

  • NamedRange 控制項加入至工作表

  • 針對 NamedRange 控制項事件進行程式設計

  • 測試您的專案

注意事項注意事項

在下列指示的某些 Visual Studio 使用者介面項目中,您的電腦可能會顯示不同的名稱或位置: 您所擁有的 Visual Studio 版本和使用的設定決定了這些項目。 如需詳細資訊,請參閱 使用設定

必要條件

您需要下列元件才能完成此逐步解說:

-

包含 Microsoft Office 開發者工具的 Visual Studio 2010 版本。 如需詳細資訊,請參閱[設定電腦以開發 Office 方案](bb398242\(v=vs.100\).md)。
  • Excel 2007 或 Excel 2010。

建立專案

在這個步驟中,您將會使用 Visual Studio 建立 Excel 活頁簿專案。

若要建立新的專案

  • 建立名為 My Named Range Events 的 Excel 活頁簿專案。 請確定已選取 [建立新文件]。 如需詳細資訊,請參閱 HOW TO:在 Visual Studio 中建立 Office 專案

    Visual Studio 會在設計工具中開啟新的 Excel 活頁簿,並將 My Named Range Events 專案加入至 [方案總管] 中。

將文字和已命名的範圍加入至工作表

因為主控制項是擴充的 Office 物件,所以您可以將它們加入至文件,方式與加入原生物件一樣。 例如,您可以將 Excel NamedRange 控制項加入至工作表,方法是開啟 [插入] 功能表,指向 [名稱],然後選擇 [定義]。 您也可以將 NamedRange 控制項從 [工具箱] 拖曳至工作表,以將其加入。

在這個步驟中,您可以使用 [工具箱] 將兩個已命名的範圍控制項加入至工作表,然後將文字加入至工作表。

若要將範圍加入至工作表

  1. 驗證 [My Named Range Events.xls] 活頁簿在 Visual Studio 設計工具中已開啟,並顯示 Sheet1。

  2. 從 [工具箱] 的 [Excel 控制項] 索引標籤,將 NamedRange 控制項拖曳至 Sheet1 中的儲存格 [A1]。

    [加入 NamedRange 控制項] 對話方塊便會出現。

  3. 驗證在可編輯的文字方塊中出現 [$A$1],且已選取儲存格 [A1]。 如果沒有出現,請按一下儲存格 [A1] 來選取它。

  4. 按一下 [確定]。

    儲存格 [A1] 變成名為 namedRange1 的範圍。 在工作表中沒有可見的指示,但選取儲存格 [A1] 後,namedRange1 會顯示在 [名稱] 方塊中 (位於工作表左側的正上方)。

  5. 將另一個 NamedRange 控制項加入至儲存格 [B3]。

  6. 驗證在可編輯的文字方塊中出現 [$B$3],且已選取儲存格 [B3]。 如果沒有出現,請按一下儲存格 [B3] 來選取它。

  7. 按一下 [確定]。

    儲存格 [B3] 變成名為 namedRange2 的範圍。

若要將文字加入至工作表

  1. 在儲存格 [A1] 中,輸入下列文字:

    這是 NamedRange 控制項的範例。

  2. 在儲存格 [A3] 中 (位於 namedRange2 的左側),輸入下列文字:

    事件:

在下列各節中,您將會撰寫程式碼,以便將文字插入 namedRange2 並修改 namedRange2 控制項的屬性,以回應 namedRange1 的 BeforeDoubleClickChangeSelectionChange 事件。

加入程式碼以回應 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 事件中所示。 如需建立事件處理常式的詳細資訊,請參閱 HOW TO:在 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 範圍中的儲存格上按兩下會進入編輯模式,所以在選取範圍移至 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 範圍中的儲存格上按兩下會讓選取範圍移至該範圍,所以會先發生 SelectionChange 事件,然後再發生 BeforeDoubleClick 事件。

測試應用程式

現在,您可以測試活頁簿,驗證引發事件時,描述 NamedRange 控制項之事件的文字已插入另一個已命名的範圍。

若要測試您的文件

  1. 請按 F5 執行您的專案。

  2. 將游標置於 namedRange1,並驗證已插入 SelectionChange 事件的有關文字,且已將註解插入工作表中。

  3. 在 namedRange1 內按兩下滑鼠,並驗證已插入 BeforeDoubleClick 事件的有關文字,且 namedRange2 中是紅色斜體文字。

  4. 在 namedRange1 外按一下滑鼠,注意結束編輯模式時會發生變更事件,即使未變更文字也是如此。

  5. 變更 namedRange1 中的文字。

  6. 在 namedRange1 內按一下滑鼠,並驗證已插入 Change 事件的有關文字,且 namedRange2 中是藍色文字。

後續步驟

這個逐步解說顯示針對 NamedRange 控制項的事件,進行程式設計的基本概念。 以下是接下來的工作:

請參閱

工作

HOW TO:調整 NamedRange 控制項的大小

HOW TO:將 NamedRange 控制項加入至工作表

HOW TO:在 Office 專案中建立事件處理常式

概念

主項目和主控制項概觀

使用擴充物件自動化 Excel

NamedRange 控制項

主項目和主控制項的程式設計限制