Hoja de cálculo en la enseñanza de las ciencias

Hoja de cálculo en la enseñanza de las ciencias

Sesión 9: Complementos

Asignación de macros

Asignación de una macro a un objeto

La forma de ejecutar una macro mediante la secuencia Herramientas - Macros... - Ejecutar macro es muy lenta. Sería preferible ejecutar macros con una sola pulsación de ratón. Para ello basta con asignar la macro a un objeto, como una imagen, autoforma, rótulo, cuadro de texto, botón etc.

Lo veremos con varios ejemplos, y simultáneamente aprenderemos algunas operaciones sobre celdas.

Incremento del valor de una celda

Escribe un número cualquiera en la celda B4 y algún rótulo de presentación sobre ella. Por ejemplo así:

Ahora, con Herramientas - Galería - Página principal, arrastra una imagen de botón junto a la celda B4. Si no dominas esta operación, inserta una imagen cualquiera.

Guarda la hoja con el nombre prueba.ods u otro similar.

Accede a la edición de una macro nueva siguiendo los pasos Herramientas - Macros - Organizar macros - OpenOffice.org Basic... Si no tienes módulo contenedor, créalo como ya vimos en un apartado anterior.

Si no se abre de forma automática el editor de macros, pulsa el botón Editar y obtendrás una pantalla de edición, en la que quizás esté iniciada la macro Main, que puedes borrar o ignorar.

Escribe debajo este código de macros (puedes copiarlo desde esta misma página web con CTRL-C y CTRL-V), aunque todavía no lo entiendas:

Sub incrementar
v=StarDesktop.CurrentComponent.sheets(0).GetCellByPosition(1,3).value
v=v+1
StarDesktop.CurrentComponent.sheets(0).GetCellByPosition(1,3).value=v
end sub

Esta macro te incrementa de 1 en 1 el valor de la celda B4 cada vez que pulses sobre la imagen que has insertado. Después la explicaremos.

Ahora viene lo más fácil: Señala la imagen del botón y pulsa el botón derecho. Elige la opción de Asignar macro... Se te abrirá este cuadro de diálogo (a veces tarda en aparecer)

Busca tu archivo prueba.ods, el módulo Module1 (u otro que tengas) y la macro incrementar. Selecciónala y pulsa Asignar y después Aceptar.

Con esto, cada vez que pulses sobre la imagen (el puntero del ratón se transformará en un dedo señalador) se incrementará el valor de la celda B4.

Explicación del código

Aunque este documento no pretende enseñarte a programar, te vendrá bien saber interpretar el código que has copiado.

Sub incrementar
v=StarDesktop.CurrentComponent.sheets(0).GetCellByPosition(1,3).value
v=v+1
StarDesktop.CurrentComponent.sheets(0).GetCellByPosition(1,3).value=v
end sub

Lo explicamos por partes:

Todas las macros han de comenzar con la palabra clave Sub seguida del nombre de la macro (en este caso incrementar) y han de terminar con la línea end sub.

En la segunda línea y en la cuarta se usan tres palabras que conviene interpretar bien. Son nombres de objetos de OpenOffice.org.

StarDesktop.CurrentComponent: Se refiere al archivo actual de OpenOffice.org que tienes abierto.

sheets(0): Se refiere a la hoja en la que se actuará. Se usa el cero para referirse a la primera hoja, porque la numeración en los objetos comienza siempre con el 0 y no con el 1.

GetCellByPosition(1,3): Es la referencia al objeto celda B4. El 1 se refiere a la columna B, que es la segunda, pero como comenzamos a contar por el cero, hay que escribir un 1. El 3 se refiere a la cuarta fila, que también hay que situar contando desde cero.

Explicado esto, se entiende mejor lo que ejecuta la macro:

Línea 1: Comienzo obligatorio con la palabra Sub y el nombre de la macro.
Línea 2: Se lee el valor de la celda B4 (palabra value) y el resultado se guarda en una variable llamada v.
Línea 3: Se incrementa v en un unidad.
Línea 4: Se copia el valor de v en la celda B4 de nuevo, pero ya incrementado.
Línea 5: Sentencia obligatoria end sub

La explicación anterior sólo pretende que te vayas acostumbrando a la forma de trabajar en Basic. Un aprendizaje más profundo requiere un manual sistematizado.