9 de septiembre de 2015

Tablas en Excel 2013

Introducción al uso de tablas en Excel

Tu información en Excel es muy útil si sabes como analizarla adecuadamente. Si tienes un conocimiento básico de las tablas en Excel podrás organizar la información de una manera fácil de entender.
Esta es una serie de artículos previamente publicados en este sitio Web que te ayudarán a aprender lo escencial para utilizar las tablas en Excel de manera que puedas presentar tus datos adecuadamente:
  1. ¿Qué es una tabla de Excel?
  2. Tablas en Excel
  3. Cómo crear una tabla en Excel
  4. Agregar filas a una tabla de Excel
  5. Editar registros de una tabla de Excel
  6. Aplicar estilos a una tabla de Excel
  7. Filtrar registros de una tabla
  8. Filtrar números en Excel
  9. Filtrar datos por fecha
  10. Filtrar datos de tabla por color
  11. Fórmulas en tablas de Excel
  12. Referencias estructuradas

1. ¿Qué es una tabla de Excel?


Las tablas de Excel son un rango de celdas que contiene datos y su fila superior es una fila de encabezados que describen el contenido de cada columna. La nueva funcionalidad de tablas fue introducida en Excel 2007.
Aunque siempre hemos podido crear tablas en Excel, la nueva implementación de las tablas nos permite realizar ciertas tareas comunes de una manera más fácil. Además, ayuda a eliminar algunos errores comunes que se cometían con anterioridad.

Entendiendo las tablas de Excel

Las tablas de Excel son un rango de celdas que ha sido estructurado adecuadamente con nuestros datos. Cada fila de una tabla corresponde a una sola entidad, por ejemplo, una tabla puede contener información de los empleados de una empresa y por lo tanto cada fila hará referencia a un empleado diferente.
Qué es una tabla de Excel
Las tablas tienen encabezados en la parte superior y cada uno de ellos describe la información contenida en cada columna. Así por ejemplo, nuestra tabla de empleados tiene los encabezados   ID (de empleado), NombreApellidoSalarioDepartamento.
Esta misma tabla se puede crear con cualquier versión de Excel, sin embargo los beneficios los veremos cuando convertimos este rango de celdas en una tabla “oficial”. Para crear una tabla de Excel debemos elegir la ficha Insertar y posteriormente pulsar el botón Tabla. Esto convertirá el rango de celdas en una tabla de Excel.
Tablas en Excel
Una vez que hemos convertido un rango de celdas en una tabla, Excel podrá responder de una manera más inteligente a las acciones que hagamos sobre la tabla. Por ejemplo, si creamos un gráfico de Excel basado en una tabla, al momento de agregar nueva información el gráfico será actualizado automáticamente con las nuevas filas de la tabla.
Diferencias entre rangos y tablas de Excel
A continuación en listaré algunas características de las tablas de Excel que las hacen diferentes a los rangos de celdas:
  • Al activar cualquier celda de la tabla se habilitará la ficha contextual llamada Herramientas de tabla la cual contendrá comandos adicionales para trabajar con la tabla.
  • Se puede aplicar un estilo a la tabla con tan solo elegirlo de la galería de estilos.
  • Cada encabezado de columna contiene una lista desplegable la cual podemos utilizar para ordenar o filtrar los datos de la tabla.
  • Si tenemos una tabla que contiene muchas filas y movemos la barra lateral derecha de hacia abajo, en lugar de que los encabezados de la tabla desaparezcan, Excel remplaza automáticamente las letras de las columnas por los encabezados de la tabla.
  • Las tablas soportan referencias estructuradas lo que significa que en lugar de utilizar referencias de celdas, podemos utilizar el nombre de la tabla y de los encabezados.
  • La esquina inferior derecha de una tabla tiene una pequeña flecha que nos permite agregar fácilmente una nueva fila o una nueva columna. Solamente debemos arrastrar dicha esquina hacia abajo o hacia la derecha.
Las tablas de Excel nos ofrecen diversos beneficios al momento de trabajar con nuestros datos así que puedes comenzar a hacer uso de ellos y tener una mejor experiencia de uso en Excel.

¿Cómo crear una tabla en Excel?

El objetivo de una tabla de Excel es almacenar la información de una manera consistente para que sea más fácil darle formato, ordenarla y filtrarla. Tú puedes crear una tabla en Excel que te ayude a analizar mejor la información.

¿Cómo crear una tabla en Excel?

Para crear una tabla en Excel, lo primero que debes hacer es ingresar los títulos de columna. Así que haz clic en la celda en blanco en donde deseas introducir la nueva tabla e ingresa los títulos de columna como pueden ser: No. de empleado, Departamente, Nombre, Apellido, etc. Los títulos de columna deben aparecer siempre en una sola fila y sin celdas vacías entre ellos.
Cómo crear una tabla en Excel
Ahora puedes comenzar a ingresar los datos justo por debajo de los títulos de columna que acabas de crear:
Cómo crear una tabla en Excel
Ahora asegúrate de que la celda activa sea cualquier de las celdas que contienen tus datos y haz clic en el comando Tabla que se encuentra en el grupo Tablas de la ficha Insertar.
Cómo crear una tabla en Excel
Excel detectará el conjunto de celdas que acabas de introducir y colocará un borde punteado sobre los datos, al mismo tiempo que muestra el cuadro de diálogo Crear tabla, el cual automáticamente mostrará el rango de celdas donde se encuentra la información. Si por alguna razón el rango de celdas desplegado es incorrecto, utiliza el botón de selección para elegir el rango de celdas adecuado.
Cómo crear una tabla en Excel

Tabla con encabezados

Antes de hacer clic en el botón Aceptar asegúrate de tener seleccionada la opción La tabla tiene encabezados. Finalmente haz clic en Aceptar y Excel dará formato a la tabla e insertará filtros para cada una de las columnas.
Cómo crear una tabla en Excel
Otra forma de insertar una tabla es haciendo clic en el comando Dar formato como tabla que se encuentra en el grupo Estilos de la ficha Inicio. Con este comando puedes seleccionar desde un inicio el estilo que prefieres dar a la tabla.
Cómo crear una tabla en Excel

5 de septiembre de 2015

Formularios en VBA

Formularios en VBA

Los formularios en VBA no son más que un cuadro de diálogo de Excel donde podremos colocar controles que nos ayudarán a solicitar información del usuario. Podremos colocar cajas de texto, etiquetas, cuadros combinados, botones de comando, etc.

Crear un formulario en Excel

Los formularios de Excel son creados desde el Editor de Visual Basic donde debemos seleccionar la opción de menú Insertar y posteriormente la opción UserForm.
Formularios en VBA
Inmediatamente se mostrar un formulario en blanco y de igual manera podrás observar el Cuadro de herramientas:
Formulario en Excel 2010
Si no ves el Cuadro de herramientas puedes seleccionar el menú Ver y la opción Cuadro de herramientas.

Agregar controles al formulario

Para agregar un control al formulario debes seleccionarlo del Cuadro de herramientas y dibujarlo sobre el formulario. En mi formulario he agregado etiquetas y cuadros de texto así como un par de botones de comando:
UserForm en Excel
El texto de las etiquetas se modifica en la propiedad llamada Caption. Para realizar este cambio solamente selecciona el control y se mostrará la ventana de Propiedades donde podrás hacer la modificación.  De igual manera el texto desplegado en los botones de comando se modifica en su propiedad Caption.

Código para el botón Cancelar

El botón cancelar cerrará el formulario sin guardar la información capturada en ningún lugar. El código que debemos utilizar es el siguiente:
Private Sub CommandButton2_Click()
Unload Me
End Sub
Para agregar este código puedes hacer doble clic sobre el control. La sentencia “Unload Me” cerrará elformulario.

Código para el botón Aceptar

A diferencia del botón Cancelar, el botón Aceptar colocará los datos de las cajas de texto en las celdas A1, B1 y C1. El código utilizado es el siguiente:
Private Sub CommandButton1_Click()
Worksheets("Hoja1").Range("A1").Value = Me.TextBox1.Value
Worksheets("Hoja1").Range("B1").Value = Me.TextBox2.Value
Worksheets("Hoja1").Range("C1").Value = Me.TextBox3.Value
End Sub
Al pulsar el botón Aceptar se transferirán los valores de los controles TextBox hacia las celdas de la Hoja1.

Botón para abrir formulario

Para facilitar la apertura del formulario puedes colocar un botón ActiveX en la hoja con el siguiente código:
Private Sub CommandButton1_Click()
UserForm1.Show
End Sub

Probar el formulario

Observa cómo cada uno de los botones realiza la acción correcta al pulsarlos:
Ejemplo de formulario VBA en Excel

Botón de opción en VBA

Botón de opción en VBA

Un botón de opción es un control ActiveX que nos permitirá seleccionar una sola opción dentro de un grupo de botones de opción. A diferencia de las casillas de verificación, los botones de opción dependen uno del otro.

El botón de opción en Excel

Para insertar un botón de opción hacemos clic en el comando Insertar de la ficha Programador.
El botón de opción en Excel
Un solo botón de opción no hace mucho sentido, así que siempre agregamos dos o más botones de opciónpara permitir que usuario haga una selección de cualquiera de ellos.
Insertar botones de opción
Una vez que se ha agregado un segundo botón de opción podrás notar que al seleccionar uno de ellos se desmarcarán todos los demás.

La propiedad Caption

De manera predeterminada Excel colocará el botón de opción con un nombre como OptionButton1. Para cambiar este texto debemos editar la propiedad Caption del botón de opción.
La propiedad Caption del botón de opción

El botón de opción en VBA

Para saber si un botón de opción ha sido seleccionado podemos acceder a su propiedad Value de la siguiente manera:
1
2
3
Private Sub OptionButton1_Click()
If OptionButton1.Value = True Then MsgBox ("Has seleccionado la opción Hombre")
End Sub
La propiedad Value es la que nos indica si el control está seleccionado, en cuyo caso, la propiedad será igual aTrue. Para este ejemplo, al validar que el botón de opción está seleccionado, se mostrará un cuadro de diálogo con un mensaje sobre la opción seleccionada.

Casilla de verificación en VBA

Casilla de verificación en VBA

Una casilla de verificación es un control ActiveX que podemos utilizar para permitir que un usuario marque una opción y por lo tanto poder conocer sus preferencias al verificar dicho valor en código VBA.

El control ActiveX casilla de verificación

Para insertar este control debemos ir al comando Insertar y seleccionar la opción Casilla de verificación (Control ActiveX).
Control ActiveX Casilla de Verficación
Después de dibujar este control tendrás el siguiente resultado:
Casilla de verificación en Excel

Propiedades de una casilla de verificación

La primera propiedad que desearas modificar de una casilla de verificación será su propiedad Caption que es la que almacena el texto desplegado dentro del control ActiveX. Por ejemplo, si deseo que el control muestre el texto “Mayor de edad” debo hacer el cambio de la siguiente manera:
Propiedad Caption de una casilla de verificación
La otra propiedad de una casilla de verificación que tal vez quieras modificar será la propiedad Value que de manera predeterminada tendrá el valor False lo cual indica que el control se mostrará desmarcado. Si deseas que el control se muestre marcado de manera predeterminada, debes poner el valor True en la propiedadValue:
Propiedad Value de una casilla de verificación

Valor de una casilla de verificación

Una casilla de verificación nos dirá su ha sido seleccionada o no, es decir, nos devolverá un valor FALSO o VERDADERO. Para leer este valor debemos acceder a la propiedad Value del control de la siguiente manera:
Private Sub CheckBox1_Click()
Range("C4").Value = CheckBox1.Value
End Sub
Esta línea de código coloca el valor de la casilla de verificación en la celda C4. De esta manera, al seleccionar la casilla de verificación obtendré el siguiente resultado:
Valor de una casilla de verificación
Para validar en VBA si la casilla de verificación tiene un valor u otro podemos utilizar un código como el siguiente:
If CheckBox1.Value = True Then Range("C4").Value = 1
If CheckBox1.Value = False Then Range("C4").Value = 0
La primera línea valida si el control ActiveX tiene un valor verdadero y  de ser así coloca el número 1 en la celda C4. Si la casilla de verificación no ha sido seleccionada (falso) entonces colocará el número cero en la celda C4.

Cuadro combinado en VBA

Cuadro combinado en VBA

Excel tiene un control ActiveX conocido como Cuadro combinado el cual también es llamado comúnmente por su nombre en inglés: Combo Box. Este control nos permite crear listas desplegables en nuestros formularios.
Para insertar un Cuadro combinado debemos ir a la ficha Programador y dentro del botón Insertar pulsar el comando Cuadro combinado (control ActiveX):
Control ActiveX cuadro combinado
Después de dibujar el Cuadro combinado tendrás un resultado como el siguiente:
Cuadro combinado insertado en una hoja

Agregar elementos al cuadro combinado

Si quiero que el Cuadro combinado muestre los valores del rango A1:A5, puedo utilizar la propiedadListFillRange donde puedo indicar este rango:
Propiedad ListFillRange del Cuadro combinado
Como resultado obtendré los valores de las celdas como elementos del Cuadro combinado:
Elementos de un cuadro combinado

Diferencia con el cuadro de lista

Una diferencia importante entre el Cuadro combinado y el cuadro de lista es que el primero permite que el usuario capture una opción diferente a las mostradas en la lista. En el ejemplo anterior no aparecía el día domingo como parte de los elementos, sin embargo puedo capturar el día domingo dentro del cuadro de lista.
Capturar un elemento en un cuadro combinado
Si quieres evitar que el usuario introduzca sus propios valores existen dos opciones:
  • Utilizar el control ActiveX Cuadro de lista en lugar del Cuadro combinado
  • Utilizar el Cuadro combinado pero validar la opción seleccionada con código VBA de manera que nos aseguremos que el usuario ha seleccionado una opción de la lista. Un ejemplo de código de validación es el siguiente:
Código VBA para validar elemento seleccionado de un cuadro combinado

Asociar una celda al cuadro combinado

Al igual que con otros controles ActiveX, podemos asocias una celda al cuadro combinado de manera que muestre el elemento de la lista que haya sido seleccionado. Esta configuración la hacemos en la propiedadLinkedCell:
Propiedad LinkedCell de un cuadro combinado
Cuando selecciones un elemento del cuadro combinado se reflejará dicha selección en la celda indicada en la propiedad LinkedCell:
Celda vinculada a un cuadro combinado

Cuadro de lista en VBA

Cuadro de lista en VBA

El cuadro de lista es un control ActiveX que nos permite desplegar una serie de opciones de las cuales el usuario puede realizar una selección. Podemos configurar el cuadro de lista para permitir seleccionar uno o varios elementos de la lista.

Dibujar un cuadro de lista

Para insertar un cuadro de lista en una hoja de Excel debemos ir a la ficha Programador y pulsar el botón Insertar para seleccionar la opción Cuadro de lista (control ActiveX).
Control ActiveX Cuadro de lista

Especificar los elementos del cuadro de lista

Una alternativa para indicar los elementos de un cuadro de lista es a través de la propiedad llamadaListFillRange. Para ello debemos abrir las propiedades del control e indicar el rango de celdas que contiene los elementos:
Propiedad ListFillRange de un Cuadro de lista
En este ejemplo he especificado que los valores sean tomados del rango A1:A6, lo cual da como resultado uncuadro de lista con los valores especificados en dicho rango:
Especificar los elementos de un Cuadro de lista

Elementos del cuadro de lista por código

Otra alternativa para indicar los elementos de un cuadro de lista es a través de código VBA. Para ello puedes incluir el siguiente código en el evento Workbook_Open:
Elementos de un cuadro de lista por código VBA
De esta manera cuando se abra el libro se agregarán las opciones al cuadro de lista llamado ListBox1.

Asociar una celda al cuadro de lista

Adicionalmente podemos asociar una celda al cuadro de lista la cual mostrará la selección que hagamos. Para hacer esta asociación debemos especificar la dirección de la celda en la propiedad LinkedCell:
Propiedad LinkedCell de un Cuadro de lista
De esta manera, cada vez que hagamos una selección de alguna de las opciones del cuadro de lista se verá reflejado su valor en la celda asociada:
Celda asociada a un Cuadro de lista

Cuadro de texto en Excel

Cuadro de texto en Excel

El cuadro de texto es un control ActiveX que muestra un campo vacío donde el usuario puede introducir cualquier texto. En esta ocasión revisaremos cómo incrustar un cuadro de texto y hacer referencia al mismo desde código VBA.

Insertar un cuadro de texto en Excel

Para insertar un cuadro de texto en una hoja de Excel debes ir a la ficha Programador y hacer clic en el botón Insertar y entonces hacer clic sobre la opción Cuadro de texto  de la sección Controles ActiveX.
Cuadro de texto en Excel
El puntero del ratón se convertirá en una cruz la cual nos permitirá dibujar el cuadro de texto sobre la hoja de Excel. Una vez dibujado el cuadro de texto podrás hacer clic derecho sobre él y seleccionar la opción Propiedades para conocer el nombre que la ha sido asignado.
Nombre del cuadro de texto insertado
También puedes ver las propiedades de cualquier control seleccionándolo primero y pulsando el botón Propiedades que se encuentra dentro del grupo Controles de la ficha Programador.

Modificar valor del cuadro de texto

Si deseas colocar un texto dentro del cuadro de texto desde VBA puedes utilizar una instrucción como la siguiente:
TextBox1.Text = "Texto inicial"
Esto hará que el cuadro de texto se vea de la siguiente manera:
Modificar valor del cuadro de texto

Leer valor del cuadro de texto

Si quieres leer el valor del cuadro de texto y colocarlo en una celda podemos utilizar la siguiente instrucción:
Range("A1").Value = TextBox1.Text
El valor de la celda será el mismo que el del cuadro de texto.
Leer valor del cuadro de texto
Si deseas limpiar el cuadro de texto puedes utilizar la siguiente instrucción:
TextBox1.Text = ""

Controles ActiveX en Excel

Controles ActiveX en Excel

Los controles ActiveX son un tipo de controles que nos permiten agregar funcionalidad de formularios a nuestros libros de Excel. Existe otro tipo de controles que es conocido como Controles de formulario y que tienen una funcionalidad similar, sin embargo existen algunas diferencias entre ambos tipos.

Controles ActiveX y controles de formulario

Los controles de formulario fueron introducidos desde la versión 4 de Excel y por lo tanto han estado presentes en la aplicación por más tiempo que los controles ActiveX los cuales comenzaron a ser utilizados a partir de Excel 97. Ya que los controles ActiveX fueron introducidos posteriormente ofrecen más posibilidades de configuración y formato que los controles de formulario.  Ambos tipos de controles se encuentran en la ficha Programador.
Controles ActiveX en Excel 2010
La diferencia más significativa entre ambos es la manera en como podemos obtener información de los controles al momento de interactuar con el usuario. Los controles de formulario solamente responderán después de que el usuario ha interactuado con ellos, como después de haber pulsado el botón. Por el contrario, los controles ActiveX responden de manera continua a las acciones del usuario lo cual nos permite realizar acciones como cambiar el tipo de puntero del mouse que se muestra al colocar el puntero del ratón sobre el botón.

Propiedades de los controles ActiveX

A diferencia de los controles de formulario, los controles ActiveX tienen una serie de propiedades que podemos configurar pulsando el botón Propiedades que se encuentra dentro del grupo Controles de la ficha Programador.
Propiedades de un control ActiveX en Excel
Antes de poder ver las propiedades de un control ActiveX debemos pulsar el botón Modo Diseño el cual nos permitirá seleccionar el control y posteriormente ver sus propiedades. Cada tipo de control ActiveX mostrará una ventana de Propiedades con sus propias características. A continuación un ejemplo de la ventana Propiedades para un botón de comando ActiveX:
Propiedades de un botón ActiveX en Excel

Controles ActiveX con subrutinas VBA

Otra diferencia entre los controles de formulario y los controles ActiveX es que los primeros pueden tener asignada una macro y al hacer clic sobre el control de formulario se iniciará la ejecución de dicha macro.
Los controles ActiveX no tienen asignada una macro explícitamente sino que podemos asignar código VBA para cada evento del control. Un evento de un control ActiveX puede ser el evento de hacer clic sobre el control, el evento de hacer doble clic, el evento de obtener el foco sobre el control ActiveX, entre otros eventos más. Para asignar código a uno de los eventos de un control ActiveX solamente debemos hacer clic derecho sobre él y seleccionar la opción Ver código.
Ver código de un control ActiveX en Excel
Esto mostrará el Editor de Visual Basic con una subrutina para el evento Click() donde podremos escribir nuestro código.
Subrutina VBA para el evento Click de un control ActiveX
En la lista desplegable de la derecha podemos observar la lista de eventos disponibles para nuestro control ActiveX y para los cuales podemos escribir código VBA. Al seleccionar cualquiera de dichos eventos se insertará una nueva subrutina que podremos utilizar. Son precisamente la gran cantidad de eventos disponibles para los controles ActiveX lo que los hace controles muy poderosos que podemos utilizar en nuestros formularios.

Otra ventaja de los controles ActiveX en Excel

En la versión de Excel 2010 algunos controles de formulario han dejado de ser soportados y no podemos utilizarlos más en nuestras hojas. Ese es el caso del control de formulario conocido como campo de texto. Sin embargo, dentro de la lista de controles ActiveX seguimos teniendo disponible el control llamado Cuadro de texto lo cual puede hacer atractiva la opción de utilizar controles ActiveX en Excel en lugar de controles de formulario.

Controles de formulario en Excel

Controles de formulario en Excel

Los controles de formulario en Excel son objetos que podemos colocar dentro de una hoja de nuestro libro, o dentro de un formulario de usuario en VBA, y nos darán funcionalidad adicional para interactuar mejor con los usuarios y tener un mejor control sobre la información.
Podemos utilizar estos controles para ayudar a los usuarios a seleccionar elementos de una lista predefinida o permitir que el usuario inicie una macro con tan solo pulsar un botón. Los controles de formulario en Excel se encuentran dentro de la ficha Programador dentro del grupo Controles. Solamente pulsa el botón Insertar y observarás cada uno de ellos:
Controles de formulario en Excel
Justo por debajo de los controles de formulario podrás observar el grupo de controles ActiveX pero sus diferencias y similitudes las discutiremos en otro artículo. Por ahora nos enfocaremos solamente en los controles de formulario.

¿Cómo insertar un control de formulario en Excel?

Para insertar cualquiera de los controles de formulario debes seleccionarlo del menú desplegable y hacer clic sobre la hoja de Excel arrastrando el borde para “dibujar” el contorno del control. Observa este procedimiento.
Insertar un control de formulario en Excel

Los diferentes controles de formulario

Existen diferentes tipos de controles de formulario en Excel que ofrecen diversos tipos de funcionalidad e interacción con el usuario. Desde una simple etiqueta hasta controles que permiten una selección múltiple de sus opciones. A continuación una breve descripción de cada uno de ellos.
  • Barra de desplazamiento. Al hacer clic en las flechas se va desplazando la barra dentro de un intervalo predefinido.
  • Botón. El botón nos permite ejecutar una macro al momento de hacer clic sobre él.
  • Botón de opción. Nos permite una única selección dentro de un conjunto de opciones.
  • Casilla de verificación. Permite la selección o no selección de una opción.
  • Control de número.  Nos ayuda a aumentar o disminuir un valor numérico.
  • Cuadro combinado. Es una combinación de un cuadro de texto con un cuadro de lista.
  • Cuadro de grupo. Agrupa varios controles dentro de un rectángulo.
  • Cuadro de lista. Muestra una lista de valores de los cuales podemos elegir una sola opción  o múltiples opciones de acuerdo a la configuración del control.
  • Etiqueta. Permite especificar un texto o breves instrucciones en el formulario.

Controles de formulario no disponibles en Excel 2010

Los controles de formulario han estado presentes por varias versiones de Excel, sin embargo a partir de Excel 2010 existen algunos controles que ya no pueden ser utilizados dentro de las hojas como lo son el Campo de texto, el Cuadro combinado de lista y el Cuadro combinado desplegable, sin embargo podremos alcanzar funcionalidad similar utilizando controles ActiveX.

Creando una función VBA

Creando una función VBA

Como hemos visto en el artículo Tu primera macro con VBA, una subrutina nos ayuda a organizar y agrupar las instrucciones en nuestro código. El día de hoy te mostraré cómo crear una función VBA, la cual es similar a una subrutina excepto por una cosa.
A diferencia de las subrutinas, las funciones VBA fueron diseñadas para retornar un valor. A través de una función podemos agrupar código que nos ayudará a hacer algún cálculo específico y obtener un resultado de regreso. Una función VBA también es conocida como Función Definida por el Usuario, UDF por sus siglas en inglés, y una vez creada puede ser utilizada de la misma manera que las funciones incluidas en Excel como la función SUMAR o la función BUSCARV. Esto hace que las funciones VBA sean una herramienta muy poderosa.
A continuación mostraré una función que toma un rango y regresa la suma de cada una de sus celdas. Es importante insertar el código dentro de un Módulo tal como se muestra en el artículo Tu primera macro con VBA. Posteriormente iré explicando el detalle de la función.
Función VBA

La palabra clave Function

La primera línea de código comienza con la palabra Function la cual define el inicio de la función. Observa también cómo la última línea de código es End Function que está especificando el término de la función.
Inmediatamente después de la palabra clave Function se debe especificar el nombre de la función que en este ejemplo es MiSuma seguida de paréntesis que de manera opcional pueden contener una lista de parámetros.

Parámetros  de una función VBA

Los parámetros son el medio por el cual pasamos información de entrada a la función. Algunas funciones necesitarán de dichas entradas para realizar algún cálculo y algunas otras no, es por ello que los parámetros de una función son opcionales. Puedes incluir tantos parámetros como sean necesarios y solamente debes recordar separarlos por una coma.
Un parámetro no es más que una variable y por lo tanto puedes observar que en el ejemplo he definido la variable rango que será del tipo Range.

Valor de retorno

Como mencioné al principio, la característica principal de una función es que puede regresar un valor. Es por eso que al definir una función se debe indicar el tipo del valor de retorno que tendrá dicha función. En este caso el valor de retorno será de tipo Double y se está especificado por las palabras As Double que aparecen después de los paréntesis.

Cuerpo de la función VBA

Una vez definida la función se pueden especificar todas las instrucciones que serán ejecutas. En el ejemplo he comenzado por definir un par de variables, la variable celda que será del tipo Range y la variable resultado del tipo Double. En ésta última variable es donde se irá acumulando la suma de todas las celdas.
La parte central de la función se encuentra en la instrucción For Each ya que realiza un recorrido por todas las celdas del rango que fue especificado como parámetro. Para cada celda que se encuentra se va sumando su contenido en la variable resultado.

Retornando el valor

Una vez que se han hecho los cálculos necesarios, es importante regresar el valor. Para hacerlo es indispensable igualar el nombre de la función al valor o variable que contiene el valor que se desea regresar.  En nuestro ejemplo, la variable resultado es la que contiene la suma de todas las celdas por lo que se iguala con el nombre de la función en la línea MiSuma = resultado.

Probando la función VBA

Finalmente probaré la funciónVBA recién creada dentro de una hoja de Excel. Tal como lo definimos en el código, el único parámetro de la función debe ser un rango del cual me regresará la suma de los valores de la celda. Observa el siguiente ejemplo.
Probando una función VBA
Aunque la función MiSuma hace lo mismo que la función de Excel SUMAR, nos ha servido de ejemplo para introducir el tema de las funciones en VBA. Con este ejemplo tan sencillo hemos creado nuestra primera función VBA.

Funciones VBA

Funciones VBA

El lenguaje de programación VBA contiene un número considerable de funciones que podemos utilizar para construir código en Excel. Cuando estás escribiendo código, puedes introducir la palabra VBA seguida de un punto y verás una lista desplegable de estas funciones.
La siguiente tabla provee una descripción breve de algunas de las funciones VBA más utilizadas.
FUNCIÓNDESCRIPCIÓN
AbsRegresa el valor absoluto de un número
AscObtiene el valor ASCII del primer caracter de una cadena de texto
CBoolConvierte una expresión a su valor booleano
CByteConvierte una expresión al tipo de dato Byte
CCurConvierte una expresión al tipo de dato moneda (Currency)
CDateConvierte una expresión al tipo de dato fecha (Date)
CDblConvierte una expresión al tipo de dato doble (Double)
CDecConvierte una expresión al tipo de dato decimal (Decimal)
ChooseSelecciona un valor de una lista de argumentos
ChrConvierte un valor ANSI en valor de tipo texto
CIntConvierte una expresión en un dato de tipo entero (Int)
CLngConvierte una expresión en un dato de tipo largo (Long)
CreateObjectCrea un objeto de tipo OLE
CStrConvierte una expresión en un dato de tipo texto (String)
CurDirRegresa la ruta actual
CVarConvierte una expresión en un dato de tipo variante (Var)
DateRegresa la fecha actual del sistema
DateAddAgrega un intervalo de tiempo a una fecha especificada
DateDiffObtiene la diferencia entre una fecha y un intervalo de tiempo especificado
DatePartRegresa una parte específica de una fecha
DateSerialConvierte una fecha en un número serial
DateValueConvierte una cadena de texto en una fecha
DayRegresa el día del mes de una fecha
DirRegresa el nombre de un archivo o directorio que concuerde con un patrón
EOFRegresa verdadero si se ha llegado al final de un archivo
FileDateTimeRegresa la fecha y hora de la última modificación de un archivo
FileLenRegresa el número de bytes en un archivo
FormatCurrencyRegresa un número como un texto con formato de moneda
FormatPercentRegresa un número como un texto con formato de porcentaje
HourRegresa la hora de un valor de tiempo
IIfRegresa un de dos partes, dependiendo de la evaluación de una expresión
InputBoxMuestra un cuadro de diálogo que solicita la entrada del usuario
InStrRegresa la posición de una cadena de texto dentro de otra cadena
InStrRevRegresa la pocisión de una cadena de texto dentro de otra cadena pero empezando desde el final
IntRegresa la parte entera de un número
IsDateRegresa verdadero si la variable es una fecha
IsEmptyRegresa verdadero si la variable está vacía
IsErrorRegresa verdadero si la expresión es un valor de error
IsNullRegresa verdadero si la expresión es un valor nulo
IsNumericRegresa verdadero si la variable es un valor numérico
JoinRegresa una cadena de texto creada al unir las cadenas contenidas en un arrreglo
LCaseRegresa una cadena convertida en minúsculas
LeftRegresa un número específico de caracteres a la izquierda de una cadena
LenRegresa la longitud de una cadena (en caracteres)
LTrimRemueve los espacios a la izquierda de una cadena
MidExtrae un número específico de caracteres de una cadena de texto
MinuteRegresa el minuto de una dato de tiempo
MonthRegresa el mes de una fecha
MsgBoxDespliega un cuadro de dialogo con un mensaje especificado
NowRegresa la fecha y hora actual del sistema
ReplaceReemplaza una cadena de texto con otra
Spaceregresa una cadena de texto con el número de espacios especidicados
SplitRegresa un arreglo formado for cadenas de texto que formaban una sola cadena
StrRegresa la representación en texto de un número
RightRegresa un número especificado de carecteres a la derecha de una cadena de texto
RndRegresa un número aleatorio entre 0 y 1
RoundRedondea un número a una cantidad específica de decimales
RTrimRemueve los espacios en blanco a la derecha de una cadena de texto
SecondRegresa los segundos de un dato de tiempo
StrCompCompara dos cadenas de texto
StrReverseInvierte el orden de los caracteres de una cadena
TimeRegresa el tiempo actual del sistema
TimerRegresa el número de segundos desde la media noche
TimeValueConvierte una cadena de texto a un númer de serie de tiempo
TrimRemueve los espacios en blanco al inicio y final de una cadena de texto
TypeNameObtiene el nombre del tipo de dato de una variable
UCaseConvierte una cadena de texto en mayúsculas
ValRegresa el número contenido en una cadena de texto
WeekdayRegresa un número que representa un día de la semana
WeekdayNameRegresa el nombre de un día de la semana
YearObtiene el año de una fecha