Control de Formas en Excel - Parte 1 (Shapes Object in Excel)


En este artículo vamos a empezar a ver algo muy interesante en Excel, el control de objetos, en particulares las formas o “Shapes”.

Trabajar en Excel es muy poderoso porque podemos crear formas, gráficos, hacer ejercicios y crear escenarios bastantes complejos pero no se trata solo de fórmulas y números. Podemos crear verdaderas aplicaciones comparadas a software creado en algún lenguaje de programación y esto es porque podemos aprovechar las características visuales que nos ofrece.
Es importante trabajar en lo visual, en lo estético, en la sencillez de la hoja, en el orden de los elementos que los componen para que sean accesibles, en lo fácil de utilizar. En resumen  nuestra aplicación debe tener cierta eficiencia.

En general cuando creamos una planilla y es usada por otra persona no sabe qué es lo que hace ni cómo hacerlo pero si utilizamos botones, cuadros de controles, objetos, gráficos, dibujos, imágenes, etc., como lo haríamos con cualquier soft lo podría usar cualquier persona, lo podría entender.
Por otro lado utilizando macros y programación en visual basic podemos mejorarla aún más haciendo tareas más complejas, acciones automatizadas y podemos trabajar con seguridad creando llaves o candados que nos permita evitar cometer errores.

El video relacionado está cargado en nuestro canal de YouTube “ExcelminiApps”. Sino directamente a través de este link o click en la imagen.
¿Qué son las formas  o Shapes?
En Excel básicamente son los objetos que se pueden incrustar en la hoja como ser imágenes, dibujos o formas básicas, cuadrados, rectángulos, líneas, Circulos, etc. De la pestaña insertar >> Formas.
Las formas es uno de los objetos de Excel, por ejemplo una tabla dinámica es un objeto pero no una forma. Si quieren ver todos los objetos de Excel visiten este link. Si quieren ver todas las formas visiten este otro link.

Control de Formas Introducción
Como en todos nuestros artículos para ver algo nuevo utilizamos un ejemplo práctico, generalmente una mini aplicación. En este caso como el tema puede ser tan complejo como queramos, si bien vamos a utilizar una pequeña mini app que ya habíamos visto vamos a darnos cuenta que la podemos ir mejorando sustancialmente. En este caso el ejemplo es el “Control de Estacionamiento”.

En este caso trabajamos con algo más visual por lo que se nos ocurrió algo así:
Como podemos es bien visual, tenemos un estacionamiento o parking para 6 autos, coches, cars o lo que sea. En la parte derecha inferior tenemos un modelo que utilizamos para el ejemplo, es como un icono que representa un auto. Si un auto esta en un lugar o plaza tenemos el espacio ocupado y por tanto el icono que representa el auto se encuentra en el dibujo para ese espacio, en la parte superior podemos anotar la pantente.
Hasta el momento es algo muy simple, podríamos cada vez que ingresa un auto al parking de forma manual copiar la imagen que tenemos (plantilla) del auto y copiarla en el lugar correspondiente, y luego escribir o anotar la patente arriba.

Al parecer muy fácil pero deberiamos ejecutar esta acción tipo copiar y pegar todas las veces que queremos ingresar un auto.

Si queremos dejar el espacio libre nuevamente, porque se fue un auto, podemos borrar manualmente la imagen del espacio y tambien el número de patente. Para esto necesitariamos ejecutar dos acciones ya que no podemos seleccionar la celda y la imagen a la vez ya que son entidades diferentes por tanto borramos la imagen y luego vaciamos la celda.

En este ejemplo básico solamente vamos a hacer eso, no vamos cobrar ni a contar el tiempo transcurrido ni nada parecido. Aunque lo podemos hacer con una pequeña planilla aparte o a un lago de forma manual. Incluso lo podriamos anotar arriba de la pantente. Para este ejemplo esto basta.
En conclusión lo que podemos hacer para que nuestra tarea sea simple es escribir la patente en una celda arriba de uno de los lugares de estacionamiento y automaticamente copiar y pegar nuestra imagen de referencia. Esto es simple, lo hacemos con una macro. Entonces vamos a la pestaña Programador >> Grabar macro y grabamos la acción, copiar y pegar. Luego paramos la macro.


Si luego vamos a editar (modificar) la macro veríamos el siguiente código:
----------
Sub Macro1()
' Macro1 Macro
    ActiveSheet.Shapes.Range(Array("1 Picture")).Select
    Selection.Copy
    ActiveCell.Select
    ActiveSheet.Paste
End Sub
----------

En este ejemplo vemos que el código selecciona una forma “Shape” de la celda “J12”, la copia y luego la pega en la celda seleccionada. El objeto o forma que está en ese rango se llama o esta nombrado como “1 Picture” según podemos observar.

Hasta aquí todo fácil, ahora lo que tenemos que hacer es que el código sea inteligente, que de acuerdo a la celda de la posición en el estacionamiento que tengamos nos pegue la imagen en el lugar correspondiente. Esto parece más difícil pero ya lo habíamos visto, se puede utilizar el evento “Change” en las celdas correspondientes, sombreadas >> Rango (C14 a E14) y Rango (C27 a E27).


Bueno con el evento “Change” y utilizando el método “Intersect” o intersección tenemos:
---------
Private Sub Worksheet_Change(ByVal Target As Range)
'ExcelminiApps
'excelminiapps@gmail.com
' Macro1 Macro
If Not Intersect(Target, Range("C14:F14,C27:F27")) Is Nothing Then
    ActiveSheet.Shapes.Range(Array("1 Picture")).Select
    Selection.Copy
    ActiveCell.Select
    ActiveSheet.Paste
    ActiveCell.Offset(-1, 0).Select 'me muevo una fila para arriba así estoy sobre la selección de patente cuando presiono enter
  
End If
End Sub
---------



El evento “Change” se active cada vez que hay un cambio en la hoja y para acotar a un “Target” o zona determinada usamos el método “Intersect” como se ve en el código y que se setea o configura de esa manera con el condiccional if. Si el target coincide con el rango que nosotros queremos haga algo. En este caso que ejecute la “macro1”  por ejemplo y para utilizar todo en un solo lugar copiamos de la macro el código y lo pegamos dentro del condicional, entre IF e End IF.

Lo visto aunque parece simple no mucha gente lo conoce ni lo utiliza, es una herramienta poderosa.
Una vez que tenemos lista nuestra plantilla cada vez que introducimos la patente en su lugar automáticamente se muestra ocupado con nuestro auto de ejemplo que nos da a entender que el parking está ocupado y WUALA! Tenemos nuestra mini app lista.
Es lindo estéticamente, es eficiente y es fácil de usar. Las características que habíamos nombrado y que le dan una buena CALIFICACIÓN o índice de calidad a nuestra aplicación.
En un artículo posterior vamos a seguir viendo un poco más sobre formas.
ÉXITOS!
------
Recuerden que los artículos algunas veces requieren un mayor o menor nivel de conocimiento en ciertos temas de Excel, por ejemplo formulas avanzadas, macros o VBA, etc. Sin embargo en los artículos se nombran todos los elementos y con esta información podemos hacer nuestras pequeñas investigaciones usando internet. Las mini aplicaciones no son más que la recopilación de muchos elementos para dar forma a una nueva idea.

Pueden descargar algunos ejemplos (plantillas/templates) de la zona de Descargas y también la Tienda Si tienen alguna duda o consulta pueden hacerlo a través del formulario de Contacto.
Les recomendamos que sigan el blog por alguno de los medios, mail o por redes sociales, para recibir las actualizaciones y novedades.
¡Éxitos!

Keys:
·         Control del Objeto Forma en Excel
·         Shapes Objet VBA

No hay comentarios: