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

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
Este artigo foi arquivado. Este artigo é oferecido "tal como está" e deixará de ser actualizado.
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

Aviso: Este artigo foi traduzido automaticamente

Propriedades

ID do Artigo: 823988 - Última Revisão: 12/08/2015 03:36:00 - Revisão: 2.3

Microsoft Office Excel 2003, Microsoft Visual Studio Tools for the Microsoft Office System version 2003

  • kbnosurvey kbarchive kbmt kbbug kbautomation kbnofix KB823988 KbMtpt
Comentários