Error: No se puede eliminar una fila de la lista de Excel desde el evento CommandButton Click

Seleccione idioma Seleccione idioma
Id. de artículo: 823988 - Ver los productos a los que se aplica este artículo
Expandir todo | Contraer todo

En esta página

Síntomas

Una extensión de código administrado que ha creado para Office Excel 2003. La solución utiliza el evento Click de un control CommandButton de MSForms para quitar filas de un objeto de lista que se encuentra en una hoja de cálculo. Al hacer clic en el botón para quitar la fila de la lista , no se quita la fila y puede recibir un error en tiempo de ejecución.

Estado

Microsoft ha confirmado que este es un error en Office Excel 2003.

Solución

Para resolver este problema, asegúrese de que el CommandButton no tiene el foco al eliminar la fila de la lista. Utilice uno de los métodos siguientes:
  • Establezca la propiedad TakeFocusOnClick del CommandButton a false .

    -o bien -
  • Vuelva a activar la selección de hoja de cálculo actual para quitar el foco del control CommandButton .

Solución

Para evitar este problema, utilice uno de los métodos siguientes:
  • Establezca la propiedad TakeFocusOnClick para el control CommandButton en 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;
    }
    


    -o bien -
  • Llame al método SELECT de la hoja de cálculo actual selección para quitar el foco desde el control 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();
    }
    

Más información

Pasos para reproducir el comportamiento

  1. Inicie Microsoft Visual Studio .NET 2003.
  2. En el menú archivo , seleccione nuevo y, a continuación, haga clic en proyecto .
  3. En la lista de tipos de proyecto, expanda Proyectos de Microsoft Office System y, a continuación, haga clic en Proyectos de Visual C# . Seleccione el Libro de Excel en la lista de plantilla y, a continuación, haga clic en Aceptar .
  4. Haga clic en Finalizar en el Asistente para proyectos de Microsoft Office .
  5. Presione la tecla F5 para ejecutar el proyecto y abrir el libro en Excel.
  6. Modifique el libro como sigue:
    1. Seleccione la celda A1.
    2. En el menú datos , elija lista y, a continuación, haga clic en Crear lista . Aparece el cuadro de diálogo Crear lista . Haga clic en Aceptar .
    3. Agregar texto a las celdas A2, A3 y A4 (a2: A4).
    4. En el menú Ver , elija barras de herramientas y, a continuación, haga clic en el Cuadro de herramientas .
    5. Dibuje un control CommandButton en la hoja de cálculo. El nombre predeterminado es CommandButton1 .
    6. Guarde el libro y, a continuación, salga de Excel.
  7. Agregue el código siguiente al 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. Presione la tecla F5 para generar y ejecutar el proyecto.
  9. A continuación, haga clic en CommandButton1 .

    resultado Se interceptó una excepción al eliminar la fila en la lista. Recibirá el siguiente mensaje de error
    Excepción de HRESULT: 0x800A03EC

Propiedades

Id. de artículo: 823988 - Última revisión: lunes, 15 de enero de 2007 - Versión: 2.3
La información de este artículo se refiere a:
  • Microsoft Office Excel 2003
  • Microsoft Visual Studio Tools for the Microsoft Office System version 2003
Palabras clave: 
kbmt kbbug kbautomation kbnofix KB823988 KbMtes
Traducción automática
IMPORTANTE: Este artículo ha sido traducido por un software de traducción automática de Microsoft (http://support.microsoft.com/gp/mtdetails) en lugar de un traductor humano. Microsoft le ofrece artículos traducidos por un traductor humano y artículos traducidos automáticamente para que tenga acceso en su propio idioma a todos los artículos de nuestra base de conocimientos (Knowledge Base). Sin embargo, los artículos traducidos automáticamente pueden contener errores en el vocabulario, la sintaxis o la gramática, como los que un extranjero podría cometer al hablar el idioma. Microsoft no se hace responsable de cualquier imprecisión, error o daño ocasionado por una mala traducción del contenido o como consecuencia de su utilización por nuestros clientes. Microsoft suele actualizar el software de traducción frecuentemente.
Haga clic aquí para ver el artículo original (en inglés): 823988

Enviar comentarios

 

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