注意: 您無法從指令按鈕 Click 事件刪除 Excel 清單資料列

文章翻譯 文章翻譯
文章編號: 823988 - 檢視此文章適用的產品。
全部展開 | 全部摺疊

在此頁中

徵狀

Office Excel 2003 中,已經建立副檔名為 Managed 程式碼。您的解決方案使用 MSForms 指令按鈕 控制項的 Click 事件,以移除位於工作表的 清單 物件中的資料列。當您按一下以移除 清單 資料列按鈕時, 不會移除資料列,而且可能會收到執行時期錯誤。

狀況說明

Microsoft 已確認這是 Office Excel 2003 中的錯誤。

解決方案

如果要解決這個問題,請確定該 指令按鈕 沒有焦點當您刪除清單列。請使用下列方法之一:
  • 指令按鈕TakeFocusOnClick 屬性設定為 false

    -或者-
  • 重新選取目前的工作表選擇,以取得焦點離開 指令按鈕

其他可行方案

如果要解決這個問題而定,使用 [下列的其中一個方法]:
  • 指令按鈕 控制項的 [TakeFocusOnClick] 屬性設定為 false
    protected void ThisWorkbook_Open()
    {
    	//Get a reference to the first worksheet.
    	ws = (Excel.Worksheet)(ThisWorkbook.Worksheets[1]);
    
    	//Set up the Click event handler for CommandButton1.
    	cb = (MSForms.CommandButton)(this.FindControl("CommandButton1"));
    	cb.Click+= new MSForms.CommandButtonEvents_ClickEventHandler(cbClick);
    
    	cb.TakeFocusOnClick = false;
    }
    


    -或者-
  • 為目前的工作表 選取範圍 移除 指令按鈕 的焦點呼叫 Select 方法:
    private void cbClick()
    { 
    	ThisApplication.Selection.GetType().InvokeMember("Select",
    		System.Reflection.BindingFlags.Public | 
    		System.Reflection.BindingFlags.InvokeMethod | 
    		System.Reflection.BindingFlags.Instance,
    		null,
    		ThisApplication.Selection,
    		null);
    	
    	ws.ListObjects[1].ListRows[1].Delete();
    }
    

其他相關資訊

重製行為的步驟

  1. 啟動 Microsoft Visual Studio.NET 2003年。
  2. 在 [檔案] 功能表上指向 [新增],然後按一下 [專案]。
  3. 專案類型清單中, 展開 [Microsoft Office 系統專案,] 然後按一下 [Visual C# 專案]。選取 [範本] 清單中的 [Excel 活頁簿,然後按一下 [確定]
  4. 按一下 [完成時間Microsoft Office 專案精靈]。
  5. 按下 F5 鍵執行專案,並在 Excel 中開啟的活頁簿。
  6. 修改活頁簿,如下所示:
    1. 選取儲存格 A1。
    2. 在 [資料] 功能表上指向 [清單,然後按一下 [建立清單]。[建立清單] 對話方塊隨即出現。按一下 [確定]
    3. 將任何文字新增到儲存格 A2、 A3 和 A4 (A2: A4)。
    4. 在 [檢視] 功能表上指向 [工具列],然後按一下 [控制工具箱]。
    5. 繪製工作表上的 指令按鈕 控制項。 預設名稱是 CommandButton1
    6. 儲存該活頁簿,然後結束 Excel。
  7. 將下列程式碼加入至 Thisworkbook.cs 程式碼模組:
    private MSForms.CommandButton cb;
    private Excel.Worksheet ws;
    
    protected void ThisWorkbook_Open()
    {
    	//Get a reference to the first worksheet.
    	ws = (Excel.Worksheet)(ThisWorkbook.Worksheets[1]);
    
    	//Set up the Click event handler for CommandButton1.
    	cb = (MSForms.CommandButton)(this.FindControl("CommandButton1"));
    	cb.Click+= new MSForms.CommandButtonEvents_ClickEventHandler(cbClick);
    }
    
    private void cbClick()
    {
    	try
    	{
    		//Delete the first row in the list object.
    		ws.ListObjects[1].ListRows[1].Delete();
    	}
    	catch (Exception ex)
    	{
    		System.Diagnostics.Debug.WriteLine(ex.Message);
    		MessageBox.Show(ex.Message);
    	}
    }
    
  8. 按下 F5 鍵以建置並執行專案。
  9. 按一下 CommandButton1

    結果刪除清單中的資料列時,會攔截到例外狀況。 您會收到下列錯誤訊息
    從 HRESULT 的例外狀況: 0x800A03EC

屬性

文章編號: 823988 - 上次校閱: 2007年1月15日 - 版次: 2.3
這篇文章中的資訊適用於:
  • Microsoft Office Excel 2003
  • Microsoft Visual Studio Tools for the Microsoft Office System version 2003
關鍵字:?
kbmt kbbug kbautomation kbnofix KB823988 KbMtzh
機器翻譯
重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。
按一下這裡查看此文章的英文版本:823988
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。

提供意見

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com