Tutorial: Programar basándose en los eventos de un control NamedRange
En este tutorial, se muestra cómo agregar un control NamedRange a una hoja de cálculo de Microsoft Office Excel y cómo programar basándose en sus eventos mediante las herramientas de desarrollo de Office en Visual Studio.
Se aplica a: la información de este tema se aplica a los proyectos de nivel de documento para Excel 2007 y Excel 2010. Para obtener más información, vea Características disponibles por aplicación y tipo de proyecto de Office.
Durante este tutorial aprenderá a:
Agregar un control NamedRange a una hoja de cálculo.
Programar basándose en los eventos del control NamedRange.
Probar el proyecto.
Nota
Es posible que su equipo muestre nombres o ubicaciones diferentes para algunos de los elementos de la interfaz de usuario de Visual Studio en las siguientes instrucciones. La edición de Visual Studio que tenga y la configuración que esté utilizando determinan estos elementos. Para obtener más información, vea Trabajar con valores de configuración.
Requisitos previos
Necesita los componentes siguientes para completar este tutorial:
-
Una edición de Visual Studio 2010 que incluye las herramientas para desarrolladores de Microsoft Office. Para obtener más información, vea [Configurar un equipo para desarrollar soluciones de Office](bb398242\(v=vs.100\).md).
- Excel 2007 o Excel 2010.
Crear el proyecto
En este paso, creará un proyecto de libro de Excel con Visual Studio.
Para crear un nuevo proyecto
Cree un proyecto de libro de Excel con el nombre Mis eventos de rango con nombre. Asegúrese de que esté seleccionada la opción Crear un nuevo documento. Para obtener más información, vea Cómo: Crear proyectos de Office en Visual Studio.
Visual Studio abrirá el nuevo libro de Excel en el diseñador y agregará el proyecto Mis eventos de rango con nombre al Explorador de soluciones.
Agregar texto y rangos con nombre a la hoja de cálculo
Los controles host son objetos de Office extendidos, por lo que puede agregarlos al documento del mismo modo que agregaría el objeto nativo. Por ejemplo, puede agregar un control NamedRange de Excel a una hoja de cálculo si abre el menú Insertar, señala Nombre y elige Definir. También puede agregar un control NamedRange arrastrándolo desde el Cuadro de herramientas hasta la hoja de cálculo.
En este paso, agregará dos controles de rango con nombre a la hoja de cálculo utilizando el Cuadro de herramientas y, a continuación, agregará texto a la hoja de cálculo.
Para agregar un rango a la hoja de cálculo
Compruebe que el libro Mis eventos de rango con nombre.xls está abierto en el diseñador de Visual Studio, con Sheet1 visualizado.
En la ficha Controles de Excel del Cuadro de herramientas, arrastre un control NamedRange a la celda A1 de Sheet1.
Aparecerá el cuadro de diálogo Agregar control NamedRange.
Compruebe que en el cuadro de texto modificable aparece $ A$1 y que la celda A1 está seleccionada. Si no lo está, haga clic en la celda A1 para seleccionarla.
Haga clic en Aceptar.
La celda A1 se convierte en un rango denominado namedRange1. No hay ninguna indicación visible en la hoja de cálculo, pero en el cuadro Nombre (situado sobre la hoja de cálculo en el lado izquierdo) aparece namedRange1 cuando se selecciona la celda A1.
Agregue otro control NamedRange a la celda B3.
Compruebe que en el cuadro de texto modificable aparece $B$· y que la celda B3 está seleccionada. Si no lo está, haga clic en la celda B3 para seleccionarla.
Haga clic en Aceptar.
La celda B3 se convierte en un rango denominado namedRange2.
Para agregar texto a la hoja de cálculo
En la celda A1, escriba el texto siguiente:
Este es un ejemplo de control NamedRange.
En la celda A3 (a la izquierda de namedRange2), escriba el texto siguiente:
Eventos:
En las secciones siguientes, escribirá código que inserta texto en namedRange2 y modifica propiedades del control namedRange2 en respuesta a los eventos BeforeDoubleClick, Change y SelectionChange de namedRange1.
Agregar código para responder al evento BeforeDoubleClick
Para insertar texto en NamedRange2 basado en el evento BeforeDoubleClick
En el Explorador de soluciones, haga clic con el botón secundario en Sheet1.vb o Sheet1.cs y elija Ver código.
Agregue código de modo que el controlador de eventos namedRange1_BeforeDoubleClick tenga el aspecto siguiente:
Private Sub NamedRange1_BeforeDoubleClick( _ ByVal Target As Microsoft.Office.Interop.Excel.Range, ByRef Cancel As Boolean) _ Handles NamedRange1.BeforeDoubleClick With Me.NamedRange2 .Value2 = "The BeforeDoubleClick event occurred." .Font.Color = System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.Red) .Font.Italic = True End With End Sub
private void namedRange1_BeforeDoubleClick( Microsoft.Office.Interop.Excel.Range Target, ref bool Cancel) { this.namedRange2.Value2 = "The BeforeDoubleClick event occurred."; this.namedRange2.Font.Color = System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.Red); this.namedRange2.Font.Italic = true; }
En C#, debe agregar controladores de eventos para los intervalos con nombre tal como se muestra a continuación en el evento Startup. Para obtener información sobre la creación de controladores de eventos, vea Cómo: Crear controladores de eventos en proyectos de Office.
this.namedRange1.BeforeDoubleClick += new Microsoft.Office.Interop.Excel. DocEvents_BeforeDoubleClickEventHandler(namedRange1_BeforeDoubleClick); this.namedRange1.Change += new Microsoft.Office.Interop.Excel. DocEvents_ChangeEventHandler(namedRange1_Change); this.namedRange1.SelectionChange +=new Microsoft.Office.Interop.Excel. DocEvents_SelectionChangeEventHandler(namedRange1_SelectionChange);
Agregar código para responder al evento Change
Para insertar texto en namedRange2 basado en el evento Change
Agregue código de modo que el controlador de eventos NamedRange1_Change tenga el aspecto siguiente:
Private Sub NamedRange1_Change(ByVal Target As Microsoft.Office.Interop.Excel.Range) _ Handles NamedRange1.Change With Me.NamedRange2 .Value2 = "The Change event occurred." .Font.Color = System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.Blue) .Font.Italic = False End With End Sub
private void namedRange1_Change(Microsoft.Office.Interop.Excel.Range Target) { this.namedRange2.Value2 = "The Change event occurred."; this.namedRange2.Font.Color = System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.Blue); this.namedRange2.Font.Italic = false; }
Nota
Cuando se hace doble clic en una celda de un rango de Excel, se activa el modo de edición; por tanto, cuando la selección se desplaza fuera del rango, se produce un evento Change, incluso si no se producen cambios en el texto.
Agregar código para responder al evento SelectionChange
Para insertar texto en namedRange2 basado en el evento SelectionChange
Agregue código de modo que el controlador de eventos NamedRange1_SelectionChange tenga el aspecto siguiente:
Private Sub NamedRange1_SelectionChange(ByVal Target As Microsoft.Office.Interop.Excel.Range) _ Handles NamedRange1.SelectionChange With Me.NamedRange2 .Value2 = "The SelectionChange event occurred." .AddComment("SelectionChange always occurs before BeforeDoubleClick.") .Font.Color = System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.Black) End With End Sub
private void namedRange1_SelectionChange(Microsoft.Office.Interop.Excel.Range Target) { this.namedRange2.Value2 = "The SelectionChange event occurred."; this.namedRange2.AddComment("SelectionChange always occurs before BeforeDoubleClick."); this.namedRange2.Font.Color = System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.Black); }
Nota
Cuando se hace doble clic en una celda de un rango de Excel, la selección se desplaza al rango; por tanto, se produce un evento SelectionChange antes del evento BeforeDoubleClick.
Probar la aplicación
Ahora puede probar el libro para comprobar que el texto que describe los eventos de un control NamedRange se inserta en otro rango con nombre cuando se generan los eventos.
Para probar el documento
Presione F5 para ejecutar el proyecto.
Coloque el cursor en namedRange1 y compruebe que se inserta el texto relativo al evento SelectionChange y que en la hoja de cálculo se incluye un comentario.
Haga doble clic dentro de namedRange1 y compruebe que el texto relativo a los eventos BeforeDoubleClick se inserta con texto rojo en cursiva en namedRange2.
Haga clic fuera de namedRange1 y observe que se produce el evento Change al salir del modo de edición, aunque no se haya efectuado ningún cambio en el texto.
Cambie el texto de namedRange1.
Haga clic fuera de namedRange1 y compruebe que el texto relativo al evento Change se inserta con texto azul en namedRange2.
Pasos siguientes
Este tutorial muestra los fundamentos de la programación basada en eventos de un control NamedRange. A continuación se indica una tarea que podría tener lugar a continuación:
- Implementar el proyecto. Para obtener más información, vea Implementar soluciones de Office.
Vea también
Tareas
Cómo: Cambiar el tamaño de los controles NamedRange
Cómo: Agregar controles NamedRange a hojas de cálculo
Cómo: Crear controladores de eventos en proyectos de Office
Conceptos
Información general sobre elementos y controles Host