| Artículos | 01 JUN 2004

ActiveX

Tags: Histórico
Inserción de controles en la hoja de cálculo
Rodolfo de Benito.
¿Le gustaría no tener que teclear fechas en la hoja de cálculo y poder escogerlas de un calendario? ¿Y mostrar una imagen diferente según el valor de una celda? ¿O quizás utilizar los típicos controles de formulario para incrementar o decrementar el valor numérico de una celda? Todo ello podrá hacerlo gracias a los controles ActiveX, que además de su clara utilidad, darán un toque profesional a su hoja de cálculo.

Insertar un control de calendario vinculado a una celda
Microsoft Calendar es un control que presenta un calendario y almacena la fecha seleccionada en una celda de la hoja de cálculo. Veamos cómo insertarlo.
En primer lugar tenemos que asegurarnos de que el control está disponible. Para ello:
1. Muestre la barra de herramientas Visual Basic (Ver » Barras de Herramientas).
2. Presione el botón Editor de Visual Basic localizado en esta barra.
3. Una vez en el editor, seleccione en el menú Herramientas » Referencias y active, si es preciso, la casilla correspondiente a Microsoft Calendar Control.
4. Salga del editor cerrando su ventana.
En segundo lugar insertaremos el control en la hoja de cálculo:
1. Acceda al Cuadro de controles pulsando este botón en la barra de herramientas Visual Basic.
2. Presione el botón Más controles situado en la barra Cuadro de controles y seleccione Control Calendar.
3. El puntero del ratón adoptará la forma de una cruz. Ahora ya puede “dibujar” el contorno del calendario por medio del ratón. No trace un área muy pequeña o no podrá ver el calendario en su totalidad (si lo desea puede modificar en cualquier momento las dimensiones del calendario).
Por último vincularemos el calendario a una celda para que al seleccionar una fecha ésta aparezca en la celda asociada. Para ello:
1. Presione con el botón derecho del ratón en el calendario y seleccione la opción Propiedades.
2. En la ventana Propiedades, localice LinkedCell y teclee la dirección de la celda que le interese, por ejemplo C1.
3. Pulse el botón Salir del modo Diseño en la barra de herramientas Visual Basic y cierre esta barra y la de los controles.
Ahora ya está listo para verificar su funcionamiento. Observe que, a través de la ventana Propiedades mencionada anteriormente, puede modificar el aspecto del calendario. Por ejemplo, podría modificar el color o el tipo de letra, pero recuerde que para poder actuar sobre las propiedades es necesario entrar en el modo Diseño (accesible desde la barra Visual Basic).

Cómo ocultar el control del calendario y hacerlo visible al entrar en una celda
Si se pretende utilizar el truco anterior para introducir fechas en más de una celda quizá sea más cómodo que el calendario se muestre sólo a la hora de introducir la fecha, en lugar de estar siempre visible. De esta forma ahorraremos espacio en la hoja de cálculo.
Supongamos que tenemos tres controles tipo calendario vinculados a otras tantas celdas (ver truco anterior), por ejemplo C1, C5 y C6, y que sólo nos interesa que aparezcan al seleccionar sus celdas asociadas. Como sabe, cada vez que se cambia de celda, Excel activa el evento SelectionChange. Aprovecharemos este evento para verificar si la celda seleccionada es alguna de las asociadas a un calendario. En caso afirmativo, visualizaremos el que corresponda cambiando su propiedad Visible a True (verdadero). Para ello tendremos que saber cómo identificar cada uno de los calendarios insertados. Normalmente, el primer calendario se llamará Calendar1, el siguiente Calendar2 y así sucesivamente. Compruebe los nombres en la propiedad Name (ventana Propiedades).
Unas pocas líneas en el Editor de Visual Basic nos harán el trabajo:
1. Acceda al editor, por ejemplo, pulsando la combinación de teclas ALT + F11.
2. Dentro de la ventana Código, seleccione Worksheet en la lista desplegable Objeto. Con esta operación obtendrá lo siguiente:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)

End Sub
3. Entre las dos líneas anteriores teclee las líneas de código siguientes. Fíjese en que al inicio ocultamos todos los calendarios y luego comprobamos si hay que visualizar alguno en concreto, en lugar de ocultarlos sólo cuando la celda seleccionada no coincide con la de ningún calendario. Dejamos al lector la búsqueda de una solución más efectiva.

Calendar1.Visible = False
Calendar2.Visible = False
Calendar3.Visible = False
Select Case Target.Address
Case “$C$1”
Calendar1.Visible = True
Case “$C$5”
Calendar2.Visible = True
Case “$C$6”
Calendar3.Visible = True
End Select
4. Cierre el editor, pulse el botón Salir del modo Diseño en la barra de herramientas Visual Basic y compruebe que al entrar en las celdas C1, C5 o C6 se muestra el calendario.

Modificar el valor de una celda numérica con un Control de número
Aprovechando lo visto en los trucos precedentes, insertaremos un Control de número ActiveX para incrementar o disminuir el valor de una celda mediante los botones que a tal efecto presenta este objeto gráfico.
Supongamos que vamos a utilizar la celda B3 para almacenar un número y que nos interesa modificar el valor de esta celda a través del control ActiveX. El número debe modificarse a intervalos de una unidad y su límite inferior debe ser 208 y el superior 240. Veamos cómo:
1. Utilice la barra de herramientas Visual Basic para seleccionar el botón Control de número.
2. Sitúe el control a la derecha de la celda que va a modificarse (en nuestro caso la B3).
3. Acceda a sus propiedades mediante el menú contextual (botón derecho del ratón sobre el objeto).
4. Establezca las propiedades LinkedCell, Max y Min con los valores B3, 240 y 208 respectivamente
5. Pulse el botón Salir del modo Diseño en la barra de herramientas Visual Basic y compruebe que al actuar sobre los botones del control el valor de su celda asociada cambiará.

Cómo mostrar una imagen en función del valor de una celda
El truco que describiremos es útil para un número de imágenes reducido y con un tamaño en kB no demasiado grande, ya que se guardarán en el propio libro. Suponga que tiene almacenadas las imágenes de todas las portadas de la revista PC World, por ejemplo en formato JPG, y desea hacer una hoja de cálculo en la que al introducir el número de revista aparezca la imagen de su portada correspondiente. Para conseguirlo necesitará al menos un control tipo Imagen y una celda que contenga el número de la revista a visualizar. Por coherencia con el truco anterior, este número se modificará con el control de tipo numérico que desarrollamos en él. Además, conservará sus restricciones, es decir, las portadas son de las revistas nº 208 a la 240.
Pero ¿cómo asociar una imagen a su número de revista? Una solución sencilla es emplear un control ImageList para almacenar y precargar las imágenes. Este control presenta una interfaz para indicar qué imágenes contendrá y además mantiene un índice asociado a cada imagen en función de la posición que ocupa. Por tanto, podemos hacer un acceso indexado al imageList en base al número de la revista y asociar la portada resultante al control Imagen. Por ejemplo, si el número es el tres, entonces asociaremos al control Imagen la portada situada en la tercera posición

Contenidos recomendados...

Comentar
Para comentar, es necesario iniciar sesión
Se muestran 0 comentarios
X

Uso de cookies

Esta web utiliza cookies técnicas, de personalización y análisis, propias y de terceros, para facilitarle la navegación de forma anónima y analizar estadísticas del uso de la web. Consideramos que si continúa navegando, acepta su uso. Obtener más información