Erro: Você não é possível excluir uma linha de lista do Excel do evento CommandButton Click

Traduções deste artigo Traduções deste artigo
ID do artigo: 823988 - Exibir os produtos aos quais esse artigo se aplica.
Expandir tudo | Recolher tudo

Neste artigo

Sintomas

Você criou uma extensão de código gerenciado para o Office Excel 2003. Sua solução usa o evento Click de um controle MSForms CommandButton para remover linhas de um objeto de lista que está localizado em uma planilha. Quando você clica no botão para remover a linha da lista , a linha não é removida e você pode receber um erro em tempo de execução.

Situação

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

Resolução

Para resolver esse problema, certifique-se que CommandButton não tem o foco quando você exclui a linha da lista. Use um dos seguintes métodos:
  • Defina a propriedade TakeFocusOnClick de CommandButton para false .

    - ou -
  • Novamente a seleção de planilha atual para levar o foco longe CommandButton .

Como Contornar

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


    - ou -
  • Chame o método Select para a planilha atual seleção para remover o foco de 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ções

Passos para reproduzir o problema

  1. Inicie o Microsoft Visual Studio .NET 2003.
  2. No menu arquivo , aponte para novo e, em seguida, clique em Project .
  3. Na lista de tipos de projeto, expanda Projetos do Microsoft Office System e em seguida, clique em Projects translation from VPE for Csharp Visual . Selecione a Pasta de trabalho do Excel na lista de modelos e, em seguida, clique em OK .
  4. Clique em Concluir no Assistente do Microsoft Office Project .
  5. Pressione a tecla F5 para executar o projeto e para abrir a pasta de trabalho no Excel.
  6. Modifica a pasta de trabalho da seguinte forma:
    1. Selecione a célula.
    2. No menu dados , aponte para lista e, em seguida, clique em Criar lista . A caixa de diálogo Criar lista aparece. Clique em OK .
    3. Adicionar qualquer texto às células A2, A3 e A4 (a2: A4).
    4. No menu Exibir , aponte para barras de ferramentas e, em seguida, clique em Caixa de ferramentas de controle .
    5. Desenhe um controle CommandButton na planilha. O nome padrão é CommandButton1 .
    6. Salve a pasta de trabalho e em seguida, feche o Excel.
  7. Adicione o código a seguir 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. Pressione a tecla F5 para criar e executar o projeto.
  9. Clique em CommandButton1 .

    resultado Exceção detectada ao excluir a linha na lista. Você receber a seguinte mensagem de erro
    Exceção de HRESULT: 0x800A03EC

Propriedades

ID do artigo: 823988 - Última revisão: segunda-feira, 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 traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes 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