Chyba: Nelze odstranit řádek seznamu Excel z události CommandButton Click

Překlady článku Překlady článku
ID článku: 823988 - Produkty, které se vztahují k tomuto článku.
Rozbalit všechny záložky | Minimalizovat všechny záložky

Na této stránce

Příznaky

Rozšíření spravovaný kód mít sestaven pro Office Excel 2003. Vaše řešení události Click řízení MSForms CommandButton používá k odebrání řádků z objektu seznam, který je umístěn na listu. Po klepnutí na tlačítko Odebrat řádek seznamu řádek není odebrána a obdržet chybu běhu.

Prohlášení

Společnost Microsoft potvrzuje, že se jedná o chybu v aplikaci Office Excel 2003.

Řešení

Chcete-li tento problém vyřešit, ujistěte se, CommandButton při odstranění řádku seznamu nemá fokus. Use one of the following methods: (Instalační program v počítači rozpoznal nástroje pro správu systému Windows 2000. Nástroje pro správu systému Windows 2000 nejsou kompatibilní s operačními systémy Windows Server 2003. Použijte jednu z následujících metod:):
  • Vlastnost TakeFocusOnClickCommandButton nastavit na hodnotu false.

    Nebo
  • Aktuální výběr listu převzít fokus mimo CommandButton znovu.

Jak potíže obejít

Pro řešení tohoto problému, použijte jednu z následujících metod:
  • Nastavit vlastnost TakeFocusOnClickCommandButton ovládacího prvku na hodnotu 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;
    }
    


    Nebo
  • Volání metody Vybrat pro aktuální Výběr na odebrání fokusu z CommandButton list:
    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();
    }
    

Další informace

Kroky pro reprodukci tohoto chování

  1. Spustit Microsoft Visual Studio .NET 2003.
  2. V nabídce soubor přejděte na příkaz Nový a klepněte na příkaz projekt.
  3. V seznamu typy projektu rozbalte položku Microsoft Office System projekty a klepněte na Projekty Visual C#. Vyberte Sešit Excel v seznamu šablon a potom klepněte na tlačítko OK.
  4. Klepněte na tlačítko Dokončit v Průvodce Microsoft Office Project.
  5. Stisknutím klávesy F5 spustíte projektu a otevřít sešit v aplikaci Excel.
  6. Změnit sešit následujícím způsobem:
    1. Vyberte buňky A1.
    2. V nabídce data přejděte na příkaz seznam a klepněte na příkaz Vytvořit seznam. Zobrazí se dialogové okno Vytvořit seznam. Klepněte na tlačítko OK.
    3. Přidat text do buňky A2 A3 a A4 (a2: A4 obsahující).
    4. V nabídce Zobrazit přejděte na příkaz panely nástrojů a potom klepněte na příkaz Ovládací prvky.
    5. Nakreslete ovládací prvek CommandButton na listu. Výchozí název je CommandButton1.
    6. Uložte sešit a potom ukončete aplikaci Excel.
  7. Přidejte následující kód modulu kódu 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. Stisknutím klávesy F5 sestavit a spustit projektu.
  9. Klepněte na tlačítko CommandButton1.

    Výsledek Při odstraňování řádek v seznamu je zachytil výjimku. Zobrazí se následující chybová zpráva
    Výjimka z HRESULT: 0x800A03EC

Vlastnosti

ID článku: 823988 - Poslední aktualizace: 15. ledna 2007 - Revize: 2.3
Informace v tomto článku jsou určeny pro produkt:
  • Microsoft Office Excel 2003
  • Microsoft Visual Studio Tools for the Microsoft Office System version 2003
Klíčová slova: 
kbmt kbbug kbautomation kbnofix KB823988 KbMtcs
Strojově přeložený článek
Důležité: Tento článek byl přeložen pomocí software společnosti Microsoft na strojový překlad, ne profesionálním překladatelem. Společnost Microsoft nabízí jak články přeložené překladatelem, tak články přeložené pomocí software na strojový překlad, takže všechny články ve Znalostní databázi (Knowledge Base) jsou dostupné v češtině. Překlad pomocí software na strojový překlad ale není bohužel vždy dokonalý. Obsahuje chyby ve skloňování slov, skladbě vět, nebo gramatice, podobně jako když cizinci dělají chyby při mluvení v češtině. Společnost Microsoft není právně zodpovědná za nepřesnosti, chyby nebo škody vzniklé chybami v překladu, nebo při použití nepřesně přeložených instrukcí v článku zákazníkem. Společnost Microsoft aktualizuje software na strojový překlad, aby byl počet chyb omezen na minimum.
Projděte si také anglickou verzi článku:823988

Dejte nám zpětnou vazbu

 

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