Erro: Não pode eliminar uma linha da lista de Excel do evento clicar CommandButton

Traduções de Artigos Traduções de Artigos
Artigo: 823988 - Ver produtos para os quais este artigo se aplica.
Expandir tudo | Reduzir tudo

Nesta página

Sintomas

Criou uma extensão de código gerido para o Office Excel 2003. A solução utiliza o evento Click de um controlo MSForms CommandButton para remover linhas de um objecto de lista que está localizado na folha de cálculo. Quando clica no botão para remover a linha da lista , a linha não é removida e poderá receber um erro durante a execução.

Ponto Da Situação

A Microsoft confirmou que este é um erro no Office Excel 2003.

Resolução

Para resolver este problema, certifique-se de que CommandButton não tem o foco quando elimina a linha da lista. Utilize um dos seguintes métodos:
  • Defina a propriedade TakeFocusOnClick de CommandButton como false .

    - ou -
  • Re-Select a selecção de folha de cálculo actual seja o foco longe CommandButton .

Como contornar

Para contornar este problema, utilize um dos seguintes métodos:
  • Defina a propriedade TakeFocusOnClick para o controlo CommandButton como Falso :
    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;
    }
    


    - ou -
  • Chamar o método Seleccionar para a folha actual selecção para remover o foco no CommandButton :
    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();
    }
    

Mais Informação

Passos para reproduzir o comportamento

  1. Inicie o Microsoft Visual Studio .NET 2003.
  2. No menu ficheiro , aponte para Novo e, em seguida, clique em projecto .
  3. Na lista de tipos de projecto, expanda Microsoft Office System Projects e, em seguida, clique em Visual C# Projects . Seleccione o Livro do Excel na lista de modelo e, em seguida, clique em OK .
  4. Clique em Concluir no Assistente de projecto do Microsoft Office .
  5. Prima a tecla F5 para executar o projecto e abrir o livro no Excel.
  6. Modificar o livro da seguinte forma:
    1. Seleccione a célula A1.
    2. No menu ' dados ', aponte para lista e, em seguida, clique em Criar lista . É apresentada a caixa de diálogo Criar lista . Clique em OK .
    3. Adicionar texto às células A2 e A3 A4 (a2: A4).
    4. No menu Ver , aponte para barras de ferramentas e, em seguida, faça clique sobre a Caixa de ferramentas dos controlos .
    5. Desenhe um controlo CommandButton da folha de cálculo. O nome predefinido é CommandButton1 .
    6. Guarde o livro e, em seguida, saia do Excel.
  7. Adicione o seguinte código ao módulo de código 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. Prima a tecla F5 para criar e executar o projecto.
  9. Clique em CommandButton1 .

    resultado É detectada uma excepção ao eliminar a linha na lista. Receberá a seguinte mensagem de erro
    Excepção de HRESULT: 0x800A03EC

Propriedades

Artigo: 823988 - Última revisão: 15 de janeiro de 2007 - Revisão: 2.3
A informação contida neste artigo aplica-se a:
  • Microsoft Office Excel 2003
  • Microsoft Visual Studio Tools for the Microsoft Office System version 2003
Palavras-chave: 
kbmt kbbug kbautomation kbnofix KB823988 KbMtpt
Tradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine translation ou MT), não tendo sido portanto revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática? erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 823988

Submeter comentários

 

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