Tutorial: Programar basándose en los eventos de un control NamedRange

Actualización: noviembre 2007

Se aplica a

La información de este tema sólo se aplica a los proyectos y versiones especificados de Visual Studio Tools para Office de Microsoft Office.

Tipo de proyecto

  • Proyectos de nivel de documento

Versión de Microsoft Office

  • Excel 2007

  • Excel 2003

Para obtener más información, vea Características disponibles por aplicación y tipo de proyecto.

En este tutorial se muestra cómo agregar un control NamedRange a una hoja de cálculo Microsoft Office Excel y cómo programar basándose en sus eventos utilizando Visual Studio Tools para 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 Valores de configuración de Visual Studio.

Requisitos previos

Para completar este tutorial, necesitará:

  • Visual Studio Tools para Office (componente opcional de Visual Studio 2008 Professional y Visual Studio Team System).

  • Microsoft Office Excel 2003 o Microsoft Office Excel 2007.

Crear el proyecto

En este paso creará un proyecto de libro de Excel con Visual Studio Tools para Office.

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 Visual Studio para Office.

    Visual Studio abre el nuevo libro de Excel en el diseñador y agrega 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

  1. Compruebe que el libro Mis eventos de rango con nombre.xls está abierto en el diseñador de Visual Studio, con Sheet1 visualizado.

  2. 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.

  3. 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.

  4. 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.

  5. Agregue otro control NamedRange a la celda B3.

  6. 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.

  7. Haga clic en Aceptar.

    La celda B3 se convierte en un rango denominado namedRange2.

Para agregar texto a la hoja de cálculo

  1. En la celda A1, escriba el texto siguiente:

    Este es un ejemplo de control NamedRange.

  2. 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

  1. En el Explorador de soluciones, haga clic con el botón secundario en Sheet1.vb o Sheet1.cs y elija Ver código.

  2. 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;
    }
    
  3. 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 Visual Studio Tools para 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

  1. Presione F5 para ejecutar el proyecto.

  2. 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.

  3. 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.

  4. 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.

  5. Cambie el texto de namedRange1.

  6. 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. Éstas son algunas de las tareas que pueden venir a continuación:

Vea también

Tareas

Cómo: Eliminar controles NamedRange en tiempo de diseño

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 Visual Studio Tools para Office

Conceptos

Información general sobre elementos y controles Host

NamedRange (Control)

Limitaciones de programación de elementos y controles Host

Otros recursos

Controles Host de Excel