domingo, 5 de diciembre de 2021

Operaciones básicas con números enteros en VBA para Microsoft Excel

Las operaciones básicas que se pueden realizar con valores numéricos en VBA para Microsoft Excel son aquellas que nos habían enseñado en el colegio en primaria (suma, resta, multiplicación y división) y la asignación de un valor.

Para ello, en las macros, se usan diversos símbolos denominados operadores.

La asignación de un valor se representa con el símbolo igual a =

La suma se representa con el símbolo +

La resta o diferencia se representa con el símbolo -

La multiplicación o producto se representa con el asterisco *

Y la división se representa con la barra ascendente /



El código del ejemplo es el siguiente:

Sub variablesOperacionesBasicas()

    'Variable

    Dim numeroEntero As Integer

    MsgBox (numeroEntero)


    'asignamos un valor

    numeroEntero = 14

    MsgBox (numeroEntero)

    

    'sumamos

    numeroEntero = 14 + 7

    MsgBox (numeroEntero)

    

    'restamos

    numeroEntero = 14 - 7

    MsgBox (numeroEntero)

    

    'multiplicamos

    numeroEntero = 14 * 7

    MsgBox (numeroEntero)

    

    'dividimos

    numeroEntero = 14 / 7

    MsgBox (numeroEntero)

End Sub0


Primero declaramos una variable entera sin asignar ningún valor.

Dim numeroEntero As Integer

Como ya vimos en VBA esto equivale a asignar un cero.

Con el operador = asignamos el valor 14 a la variable.

numeroEntero = 14


Con el operador + asignamos el valor 14 + 7 a la variable, esto es 21.

numeroEntero = 14 + 7

Con el operador - asignamos el valor 14 - 7 a la variable, esto es 7.

numeroEntero = 14 - 7

Con el operador * asignamos el valor 14 x 7 a la variable, esto es 98.

numeroEntero = 14 * 7

Con el operador / asignamos el valor 14 / 7 a la variable, esto es 2.

numeroEntero = 14 / 7


Aunque el uso de estos operadores parece evidente, en muchos lenguajes de programación existe un concepto denominado sobrecarga de operadores, que permite usar un mismo símbolo para realizar distintas operaciones, dependiendo del tipo de datos sobre los que se usen.

sábado, 4 de diciembre de 2021

Constantes y variables de VBA para Microsoft Excel

En VBA no se puede modificar el valor de una constante.

Aunque si los valores de las variables.

Para definir una variable se usa la siguiente sintaxis.

Const aniosMayoriaEdad As Integer = 18

Hoy lo veremos en el siguiente código.


Sub variables()

    'Constante

    Const aniosMayoriaEdad As Integer = 18

     MsgBox (aniosMayoriaEdad)

    

    'aniosMayoriaEdad = 12

    MsgBox (aniosMayoriaEdad)


    'Variable

    Dim numeroEntero As Integer

    MsgBox (numeroEntero)

    numeroEntero = 14

    MsgBox (numeroEntero)

End Sub




En primer lugar definimos una constante denominan aniosMayoriaEdad con el valor 18 la mostramos en pantalla y posteriormente intentamos cambiar su valor.


En principio el código no da error porque la asignación de un nuevo valor a la constante está comentado pero si eliminamos el comentario podremos ver lo que sucede.


Cuando intentamos cambiar el valor asignado a la constante Editor de visual Basic para aplicaciones provoca un error.

    Const aniosMayoriaEdad As Integer = 18

    aniosMayoriaEdad = 12

Mostrando una ventana de error de compilación con el mensaje "Asignación a la constante no permitida."

Esto es así porque las constantes no permiten alterar su valor.

Son útiles para definir un valor que sabemos que va a ser constante siempre y se va a mantener inalterable.

Sin embargo en muchos casos en lugar de constantes se utilizan variables.

En el ejemplo mostramos la primera ventana de mensaje en la que se muestra el valor de la constante en el momento de la creación.

En este momento se le había asignado el valor 18.


La siguiente ventana de mensaje es una segunda vez que mostramos un valor, tras intentar modificar el valor de la constante.

Dado que hemos tenido que anular la instrucción de asignación porque él entorno de programación no nos permitía asignar un nuevo valor a la constante el valor será el mismo.


La tercera vez que mostramos un valor se corresponde a la instrucción que está justo despues de la creación de la variable.

Es importante tener en cuenta que una variable cuando se ha creado aunque no se le haya asignado ningún valor tiene un valor.

    Dim numeroEntero As Integer

    MsgBox (numeroEntero)

Este valor va a depender del tipo de variable para variables de tipo entero será el cero.



Asignamos el valor 14 a la variable y volvemos a mostrarla.

    numeroEntero = 14

    MsgBox (numeroEntero)

En este caso a diferencia de la constante sí que ha cambiado el valor almacenado en la variable y mostramos en pantalla el valor 14 en lugar del 0 que mostrábamos originalmente.



Es importante tener en cuenta que las constantes no cambiará nunca de valor y las variables si lo harán además también es muy importante recordar que una variable a la que no se le haya asignado un valor aún así tendrá un valor por defecto.

miércoles, 1 de diciembre de 2021

Conversiones implícitas entre tipos de variables en VBA para Microsoft Excel

Las conversiones implícitas son aquellas que realiza el propio lenguaje de programación al tratar un dato como si fuese otro tipo de variable.

Desde mi punto de vista resultan muy peligrosas si no tenemos claro que está sucediendo, aunque en ocasiones puede ser la forma más rápida de realizar alguna acción.

Un caso típico es almacenar un número decimal dentro de una variable entera.

Como ejemplo esta macro.


En está macro asignamos el valor 5,8 primero a una variable decimal y luego a una entera, y las mostramos.

El código es el siguiente.


Sub variables()

    Dim numeroEntero As Integer

    Dim numeroDecimal As Simple

   

    'almacenamos un valor decimal

    numeroDecimal = 5.8

    

    'lo mostramos

    MsgBox (numeroDecimal)

    

    'asignamos el valor decimal a una variable entera

    numeroEntero = 5.8

    'lo mostramos

    MsgBox (numeroEntero)


End Sub


Esto provoca la alteración de la parte decimal del valor, dependiendo del lenguaje de programación, puede ser truncada, o redondeada como en el caso de VBA.

Si esta asignación se hace en medio de un código y el resultado se almacena nuevamente en una variable decimal, puede pasar desapercibido, y resultar realmente complejo encontrar la fuente del problema.

En el primer caso de muestra el valor inicial asignado a la variable.

En el segundo vemos que el valor se ha redondeado al entero más cercano.

Si non somos conscientes de estas conversiones, pueden llegar a ser un verdadero dolor de cabeza.

martes, 30 de noviembre de 2021

Comentarios en VBA para Microsoft Excel

Los comentarios, en VBA, son cualquier texto que comienza por un apóstrofe y son ignorados por el programa por lo que pueden ser usados para dejar recordatorios o explicaciones en el código.

Son quizás la parte de la sintaxis que más varía entre distintos lenguajes de programación, en C, C++ y Java comienzan por //, en Python comienzan por #, y en los archivos BAT de proceso por lotes comienzan por la palabra REM.



Un código normal es fácil de entender, pero cuando el algoritmo se complica, a veces es necesario dejar algún recordatorio de que se pretende hacer.

Para ello todos los lenguajes de programación incluyen la posibilidad de dejar comentarios dentro del propio código.

En VBA son cualquier texto que comience por un apóstrofe.

Y el entorno de programación los colores por defecto de color verde.


Otra utilidad habitual de los comentarios es la de desactivar líneas de código.

Si a una línea de código se le antepone un apóstrofe, esta es ignorada.

Esto suele ser de ayuda a la hora de buscar errores en el código.



lunes, 29 de noviembre de 2021

Tipos básicos de datos en VBA para Microsoft Excel

En VBA, como en casi todos los lenguajes de programación, existen tipos de datos básicos que permiten almacenar números enteros, números decimales, textos y datos tipo verdadero/falso.


Los tipos básicos son aquellos que nos permiten guardar datos sencillos como pueden ser números y textos.

En este ejemplo usaremos la siguiente función en la cual definimos cuatro variables de distintos tipos almacenamos un valor en cada una de ellas y finalmente las mostramos en pantalla.




Sub variables()

    Dim numeroEntero As Integer

    Dim numeroDecimal As Integer

    Dim texto As String

    Dim booleano As Boolean


    numeroEntero = 5

    numeroDecimal = 3.14

    texto = "Hola mundo"

    booleano = False

    

    MsgBox (numeroEntero)

    MsgBox (numeroDecimal)

    MsgBox (texto)

    MsgBox (booleano)

End Sub



Cómo se puede ver la primera variable almacenará un número entero.

La segunda variable almacenará un valor de tipo single lo que quiere decir un número decimal.

La tercera almacén around Street esto es una cadena de caracteres, o en otras palabras, un texto.

La tercera variable almacenar tipo boolean estos tipos de datos sirven para almacenar un valor verdadero o falso.


En este caso al ejecutar la macro veremos que se mostrara cuatro ventanas con mensajes y cada una de ellas esperara a que el usuario pulse el botón aceptar del anterior para poder mostrarse.

El primer valor que se muestra es el número entero cinco.


El segundo valor que se muestra es el decimal 3,14.

Cómo curiosidad vemos que el separador decimal se muestra como una coma en la ventana mientras que en el código lo hemos introducido como un punto.


Tercer valor se muestra como un texto.

Otra curiosidad es que en el código debemos definir los textos entre comillas pero al mostrarnos esas comillas no aparecen.

Y finalmente mostramos el resultado de la variable booleana.

También podemos comprobar que curiosamente en el código verdadero y falso se escribe en inglés mientras esté en pantalla se muestra en castellano.


Las variables son la base de cualquier lenguaje de programación y sirven para recordar el valor de un elemento en un momento determinado e incluso poder operar con ellos.

domingo, 28 de noviembre de 2021

Mensaje en statusbar con VBA en Microsoft Excel

Una ventaja de mostrar mensajes en la barra de estado es que el mensaje se mantiene hasta que se muestre un nuevo mensaje o que se resetee la barra de estado.

La principal ventaja es que no es necesaria la interacción del usuario para continuar la ejecución del programa tras mostrar el mensaje.


Hoy veremos cómo interactuar con la barra de estatus mediante código VBA.

Mediante la instrucción Application.StatusBar podemos modificar el texto mostrado en la barra de estado.

Para ello debemos igualarla al texto que deseamos mostrar.

Para resetearla es suficiente con igualar esta instrucción al valor False.

Esta es la función usada para escribir el texto "hola"en la barra de estado.


Sub statusbarHola()

    Application.StatusBar = "hola"

End Sub


Una vez guardada podemos ejecutarla desde el menú macros 


Ejecutada la macro se muestra el texto tal como se muestra.


Para mostrar adiós solo es preciso modificar levemente el código.


Sub statusbarAdios()

    Application.StatusBar = "adios"

End Sub


El texto se modifica sin que el usuario tenga que interactuar con Microsoft Excel.


Para resetearla igualamos a False la barra de estado.


Sub statusbarHola()

    Application.StatusBar = False

End Sub


La barra de estado vuelve al estado que tiene originalmente al abrir Microsoft Excel.



sábado, 27 de noviembre de 2021

Ventana de mensaje en pantalla con VBA

Comienzo un grupo de publicaciones en las que intentaré enseñar cómo programar a través de VBA.

Esto servirá para poder realizar vuestras propias macros y también como introducción a los distintos lenguajes de programación.

La macro VBA más sencilla y una de la más útiles es la que nos permite mostrar un mensaje en pantalla en Microsoft Excel.

Esta instrucción es muy utilizada para comunicarse con el usuario.


Sub mensaje()

    MsgBox ("hola mundo")

End Sub




Primero accedemos a la opción visual Basic desde la pestaña desarrollador de la cinta de opciones.

Vamos a crear una macro en el libro actual para ello primero deberemos tener un módulo para poder escribir nuestro código dentro.

Seleccionamos el documento actual y con el botón derecho pulsamos en la opción insertar y luego en módulo.

Esto genera una carpeta módulos y dentro un fichero denominado módulo 1.

Lo primero que debemos saber es que en visual Basic el código se divide en subrutinas.

La palabra clave una subrutina es SUB.

Las subrutinas también se suelen denominar funciones.

Una subrutina puede tener cualquier nombre que cumpla ciertas condiciones.

Estas condiciones implican que no empiece por ciertos caracteres y que no sea solo numérico.

Cualquier combinación de caracteres y números incluyendo el guión bajo y el guión medio podría ser un nombre válido siempre que no coincida con una palabra reservada.

En este caso vamos a nominar a nuestra subrutina mensaje.

Este será el nombre con el que identificaremos a la macro.


En este caso usaremos una instrucción que nos va a permitir mostrar una ventana emergente en pantalla un mensaje de texto.

La instruccion es MSGBOX.

Está instrucción admite múltiples parámetros pero solo uno es obligatorio.

El parámetro obligatorio es una cadena de texto en la que indicamos el mensaje que queremos mostrar.

En este caso mostraremos el típico "hola mundo".

Una vez qué hallamos acabado de escribir nuestro código, podremos cerrar la ventana de edición de código mediante la opción "Cerrar y volver a Microsoft Excel" del menú Archivo.

Para ejecutar está macro que hemos escrito tendremos que acceder a la opción macros la cinta de opciones.

Esta opción se puede encontrar dentro de la pestaña desarrollador.

Y en la ventana flotante encontraremos los nombres de las macros que tenemos disponibles.

Una vez seleccionada la macro que nos interesa solo tenemos que pulsar el botón "Ejecutar".


Este es el resultado de ejecutar nuestra macro con un mensaje hola mundo.



La parte más básica de cualquier lenguaje de programación es poder interactuar con el usuario.