- Y.. ¿cómo la vamos a hacer?
Ya llegó el preguntón de turno... pues de forma manual, con el editor, picando linea a linea ¡Bingo! #chistefácil
- Ah...vale, pues ya dirás.
Sí, sí, ahora os cuento.
Como os dije en el anterior post, para entrar en el modo manual de edición de macros, pulsaremos ALT + F11 (buscad por el teclado la F11, que imagino que la usáis menos que el dedo pequeño del pie)
Una vez ahí, con la pantalla de edición por delante, ya podemos comenzar a picar código.
Detalles Previos [conceptual]
Claro está, necesitamos un poco de teoría de programación, ¿no? Antes de nada, diferenciaros qué es un Procedimiento (Sub) de una Función (Function) aunque ambas realicen la misma actividad.
La manera más sencilla de saber si hemos de elegir entre crear una función o un procedimiento es que la primera nos devuelve un valor / objeto a su finalización y la segunda no. Sencillo, ¿verdad?
Os lo aclaro con un ejemplo: Estáis creando un código que, repetidas veces durante la ejecución del mismo, tenéis que realizar una "secuencia de Fibonacci" ¿a quién no le pasa esto en su vida cotidiana?
Algo así:
Function FibonacciNumber(ByVal N As Long)
Dim I As Long, X0 As Variant, X1 As Variant
X0 = 1: X1 = 1
For I = 3 To N Step 2
X0 = CDec(X0 + X1)
X1 = CDec(X0 + X1)
Next I
FibonacciNumber = IIf(N Mod 2 = 1, X0, X1)
End Function
Sub test()En el ejemplo anterior, hemos creado (con la función extraída de aqui) una FUNCIÓN con el nombre FibonacciNumber, la cual recibe una variable de tipo Long, numérica, y la trata hasta que devuelve el resultado del cálculo de Fibonacci al final de la misma. Ésta es llamada desde el procedimiento [Sub] test mostrando su resultado en un "MsgBox" (ya iré explicando actividades y llamadas más adelante) . De esta forma, si tuviera que calcular valores de una columna o fila de excel, no tendríamos que ir reescribiendo el código de la función una vez tras otra, sino que tan sólo haríamos bucle con la llamada hacia la función Fibonacci. ¿Me seguís? El que se pierda que levante la manita, ¿eh?
MsgBox FibonacciNumber(100)
End Sub
Ahora que ya sabéis qué es SUB y qué es Function, creemos la primera de las nuestras funciones y procedimientos.
Volvamos al Editor de Macro de Excel.
Ahora insertemos un nuevo módulo dentro de nuestro libro abierto de la siguiente manera:
Tras ello tendremos disponible dentro de nuestro libro activo un módulo, generalmente llamado "Module1" (os recuerdo que yo uso las herramientas en inglés... imagino que no traduce el nombre al castellano, siendo lo contrario, os pido disculpas y dinero, si os dejáis)
Escribimos "Sub primera" y le damos a Intro (Enter, salto de carro...)
Automáticamente nos aparecerá lo siguiente
Sub primera()
End Sub
Viene a ser la definición standard de procedimiento, donde empezaremos a crear código, como por ejemplo "Hola mundo"
Sub primera()
MsgBox "¡Hola mundo!"
End Sub
Ahora presionamos F5 y seleccionando nuestro procedimiento "primera", click sobre Run.
Nos saldra una ventana emergente que dirá ¡Hola mundo! y el botón OK.