逐步解說:針對 NamedRange 控制項的事件進行程式設計
本逐步解說示範如何將 NamedRange 控制項加入至 Microsoft Office Excel 工作表,並使用 Visual Studio 中的 Office 開發工具對其事件進行程式設計。
**適用於:**本主題中的資訊適用於 Excel 2013 和 Excel 2010 的文件層級專案。如需詳細資訊,請參閱依 Office 應用程式和專案類型提供的功能。
在瀏覽這份逐步解說期間,您將了解如何:
將 NamedRange 控制項加入至工作表
針對 NamedRange 控制項事件進行程式設計
測試您的專案
注意事項 |
---|
在下列指示的某些 Visual Studio 使用者介面項目中,您的電腦可能會顯示不同的名稱或位置:您所擁有的 Visual Studio 版本和使用的設定決定了這些項目。如需詳細資訊,請參閱Visual Studio 設定。 |
必要條件
您需要下列元件才能完成此逐步解說:
-
包含 Microsoft Office Developer 工具的 Visual Studio 2012 版本。如需詳細資訊,請參閱[設定電腦以開發 Office 方案](bb398242\(v=vs.110\).md)。
- Excel 2013 或 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 控制項從 [工具箱] 拖曳至工作表,以將其加入。
在這個步驟中,您可以使用 [工具箱] 將兩個已命名的範圍控制項加入至工作表,然後將文字加入至工作表。
若要將範圍加入至工作表
確認 我的具名 Range Events.xlsx 活頁簿在 Visual Studio 設計工具,以 Sheet1 顯示了。
從 [工具箱] 的 [Excel 控制項] 索引標籤,將 NamedRange 控制項拖曳至 Sheet1 中的儲存格 [A1]。
[加入 NamedRange 控制項] 對話方塊便會出現。
驗證在可編輯的文字方塊中出現 [$A$1],且已選取儲存格 [A1]。如果沒有出現,請按一下儲存格 [A1] 來選取它。
按一下 [確定]。
儲存格 [A1] 變成名為 namedRange1 的範圍。在工作表中沒有可見的指示,但選取儲存格 [A1] 後,namedRange1 會顯示在 [名稱] 方塊中 (位於工作表左側的正上方)。
將另一個 NamedRange 控制項加入至儲存格 [B3]。
驗證在可編輯的文字方塊中出現 [$B$3],且已選取儲存格 [B3]。如果沒有出現,請按一下儲存格 [B3] 來選取它。
按一下 [確定]。
儲存格 [B3] 變成名為 namedRange2 的範圍。
若要將文字加入至工作表
在儲存格 [A1] 中,輸入下列文字:
這是 NamedRange 控制項的範例。
在儲存格 [A3] 中 (位於 namedRange2 的左側),輸入下列文字:
事件:
在下列各節中,您將會撰寫程式碼,以便將文字插入 namedRange2 並修改 namedRange2 控制項的屬性,以回應 namedRange1 的 BeforeDoubleClick、Change 和 SelectionChange 事件。
加入程式碼以回應 BeforeDoubleClick 事件
若要根據 BeforeDoubleClick 事件將文字插入 NamedRange2
在 [方案總管] 中的 [Sheet1.vb] 或 [Sheet1.cs] 上按一下滑鼠右鍵,然後選取 [檢視程式碼]。
為 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; }
在 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 控制項之事件的文字已插入另一個已命名的範圍。
若要測試您的文件
請按 F5 執行您的專案。
將游標置於 namedRange1,並驗證已插入 SelectionChange 事件的有關文字,且已將註解插入工作表中。
在 namedRange1 內按兩下滑鼠,並驗證已插入 BeforeDoubleClick 事件的有關文字,且 namedRange2 中是紅色斜體文字。
在 namedRange1 外按一下滑鼠,注意結束編輯模式時會發生變更事件,即使未變更文字也是如此。
變更 namedRange1 中的文字。
在 namedRange1 內按一下滑鼠,並驗證已插入 Change 事件的有關文字,且 namedRange2 中是藍色文字。
後續步驟
這個逐步解說顯示針對 NamedRange 控制項的事件,進行程式設計的基本概念。以下是接下來的工作:
- 部署專案。如需詳細資訊,請參閱部署 Office 方案。