Ir al contenido principal

Formulas definidas por el usuario (UDF) - Macros en Excel

Las formulas o funciones de Excel  son el recurso principal para quienes su trabajo gira alrededor de una hoja de calculo, es por esto que cuando se habla de macros es imposible dejar de mencionarlas. Pero ¿Cuál es la diferencia entre una macro corriente y una formula?

La macro corriente se ejecuta a partir de una acción como un clic luego que es asignada a un boton, gráfico o simplemente desde el visor de macros usando la acción "Ejecutar".

Las formulas por el contrario inician con el simbolo "=" o "+" y las inserta el usuario en el momento que la requiere y la celda apropiada (Nada nuevo). La ventaja es que usando VBA puedo crear formulas propias de modo que simplemente usen los argumentos de mi interes.

Un pequeño ejemplo para aclarar:

Crear una función que convierta de grados Celsius a Farenheit. Esta formula no esta creada por defecto, en su remplazo hay otra que es convertir y que además de convertir grados tiene otras utilidades. Si lo que me interesa es unicamente de grados Celsius a Farenheit desarrollo una formula así:

=farenheit(celsius) donde celsius es el valor a convertir y farenheit es el nombre de la formula.

En el editor de VBA se veria como:

Function fahrenheit(celsius)
       Fahrenheit = celsius * 9 / 5 + 32
End Function

¿Donde estan las variables?, las variables son farenheit y celsius. En ellas se almacenan los valores de la operación y son mostrados en la celda donde se ejecute la formula.

Ejercicio reto:

Como uno de los retos de clase, se propuso desarrollar una función que permitiera tomar un rango de celdas cualquiera y sumara su contenido numerico. ¿Les suena familiar con alguna otra formula?. Si es la función suma para principiantes en el desarrollo de macros.

A continuación la solución:

Function hola(prueba As Range) As Double

Dim resultado As Double
resultado = 0     'Iniciar la variable en 0

For Each cell In prueba
    resultado = cell.Value + resultado
Next
hola = resultado

End Function


Comentarios

Entradas más populares de este blog

Creando relaciones de confianza entre maquinas Linux por SSH

He buscado muchas veces sobre este mismo tema asi que hoy he decidido documentarlo para su posterior uso. De manera general una relación de confianza entre maquinas se establece con el objetivo de evitar la digitación de contraseña para acceso por terminal (ssh). Es decir que yo pueda acceder a una maquina y esta revise entre sus known_host (lista de equipos conocidos) y me permita acceso. Otra funcion importante es que se pueda realizar sincronizaciones mediante rsync y programadas por Cron evitando la intervención del usuario. Ahora si el procedimiento tecnico. Este proceso lo realize entre dos maquinas linux con sistemas operativos Ubuntu y Red Hat respectivamente. En el caso de la maquina con Ubuntu, escogi el usuario sobre el cual deseo crear la confianza. Este procedimiento hay que hacerlo con cada usuario en el cual desea evitar digitar la contraseña puesto que son entidades independientes con privilegios distintos dentro del S.O. usuario@ubuntu$ ssh-keygen - t rsa --...

Letras separadas en una presentación de Power Point 2010

Recientemente realicé algunas pruebas con impresora matriz de punto, días después comencé a notar que al abrir presentaciones de Power Point 2010, el texto separaba las letras demasiado. Inicialmente pensé que era incompatibilidad de versiones. Luego al abrir presentaciones que había elaborado tiempo atrás verfique que ocurría lo mismo. Decidí investigar y encontré que cuando una impresora matríz de punto está por defecto, las presentaciones de Power Point 2010 modifican el espacio entre letras desconfigurándolas por completo. La solución fue seleccionar como predeterminada una impresora de tinta, si no tiene impresora de tinta se puede seleccionar la impresora que instala One Note 2010.

Bloquear Msn en Endian Firewall Community release 2.3.0

Bloquear Messenger es una de las tareas tediosas para un administrador de red. Es por eso que al configurar un Proxy con Endian, quiero dejar por escrito como hacerlo. 1. En la pestaña Firewall en el submenu Outgoing Trafic, se debe denegar todo el trafico de la interfaz GREEN = LAN, servicio MSN Messenger, protocolo TCP, puerto 1863. Se coloca la regla al incio de la tabla de reglas. 2. En la pestaña Proxy HTTP, en el submenu Access Policy se crea una regla de acceso como denegacion y en el campo Mimetypes se coloca la siguiente cadena ^application/x-msn-messenger. 3. Guardar la configuración. 4. A soportar palabras poco agradables por parte de sus compañeros de sus compañeros.