jueves, 9 de diciembre de 2021

Concatenar variables de distintos tipos en VBA para Microsoft Excel

En VBA es posible concatenar variables de distintos tipos sin necesidad de convertirlos en cadenas con antelación.

Por ejemplo es posible concatenar un texto con un número usando solamente el operador &.

El propio lenguaje realiza una conversión implícita de cualquier tipo de variable a tipo cadena de texto (String).



Este es el código del ejemplo.


Sub concatenarTexto()

    'Declaracion de Variables

    Dim numeroEntero As Integer

    Dim cadenaTexto As String

    

    'Asignamos valores

    numeroEntero = 7

    cadenaTexto = "El valor de la variable numeroEntero es " & numeroEntero

    

    'Motramos valores

     MsgBox (cadenaTexto)


End Sub



En este caso concatenados un texto con una variable de tipo Integer, y obtenemos como resultado una cadena de texto que incluye en valor almacenado en la variable.

    cadenaTexto = "El valor de la variable numeroEntero es " & numeroEntero



Para aquellos que se inician en los lenguajes de programación, es interesante constatar que el nombre de la variable siempre es sustituido por el valor que almacena.

miércoles, 8 de diciembre de 2021

Concatenar Variables de texto en VBA para Microsoft Excel

Para concatenar cadenas de texto en VBA se usa el operador &.

Es importante recordar que al concatenar dos cadenas no se añade ningún separador por defecto.

Si necesitamos incluir un espacio será preciso indicarlo como una cadena adicional.





Este es el código que usaremos como ejemplo.

Sub concatenarTexto()


    'Declaracion de Variables

    Dim cadenaTextoA As String

    Dim cadenaTextoB As String

    

    'Asignamos valores

    cadenaTextoA = "Hola"

    cadenaTextoB = "mundo"

    

    'Motramos valores

     MsgBox (cadenaTextoA)

     MsgBox (cadenaTextoB)

    

    'Concatenamos ambas variables

    cadenaTextoA = cadenaTextoA & cadenaTextoB

    

    'Motramos valores

     MsgBox (cadenaTextoA)


End Sub


Asignamos un valor a la primera cadena de texto.

    cadenaTextoA = "Hola"


Asignamos otro valor a la segunda cadena de texto.

    cadenaTextoB = "mundo"


Podemos concatenar las lo que es lo mismo que unirlas mediante el operador &.

    cadenaTextoA = cadenaTextoA & cadenaTextoB


Cómo se ve la unión es exacta no hay ningún separador que se añada.

Por lo tanto si se desea añadir un espacio como separador habrá que añadirlo manualmente.

En caso contrario las palabras aparecerán unidas sin ninguna separación entre ellas.


Si necesitamos incluir un espacio será preciso indicarlo como una cadena adicional, realizando una concatenación de la primera cadena con el espacio y luego con la segunda cadena.

martes, 7 de diciembre de 2021

Variables tipo texto en VBA para Microsoft Excel

Las variables de texto se inicializan como una cadena vacía.

Para asignar un valor de cadena de texto, se debe indicar entre comillas dobles.

En otros lenguajes de programación es posible usar también las comillas simples o el apóstrofe, pero en VBA el apóstrofe se usa para indicar los comentarios.



Este es el código que usaremos en este ejemplo.


Sub variables()


    'Declaracion de Variables

    Dim cadenaTexto As String

     MsgBox (cadenaTexto)

   

    'Asignamos un valor

    cadenaTexto = "Hola mundo"

    MsgBox (cadenaTexto)

End Sub



A diferencia de las variables de tipo numérico las variables de tipo texto cuando se crean se inicializan a un valor vacío.

Esto provoca que si intentamos mostrar el valor de la cadena no aparezca nada en pantalla.

    Dim cadenaTexto As String


A diferencia de otros lenguajes de programación las cadenas en visual Basic for applications solo se pueden definir entre comillas dobles, ya que las comillas simples o apostrofes se usan para definir los comentarios.

    cadenaTexto = "Hola mundo"



lunes, 6 de diciembre de 2021

Operaciones básicas con variables en VBA para Microsoft Excel.

Además de poder realizar operaciones entre valores y asignar el resultado a una variable, también es posible usar la variable como si fuese uno de los valores.

Sin embargo es importante entender que una variable, puede cambiar de valor, y la misma operación con datos distintos podrá producir un resultado diferente.


Este es el código que usaremos en esta explicación.

Sub variables()

    'Declaracion de Variables

    Dim numeroEnteroA As Integer

    Dim numeroEnteroB As Integer


    'Asignamos un valor

    numeroEnteroA = 1

    numeroEnteroB = 2

    

    MsgBox (numeroEnteroA)

    MsgBox (numeroEnteroB)

    

    'Asignamos / copiamos el valor de una variable en otra

    numeroEnteroB = numeroEnteroA


    MsgBox (numeroEnteroA)

    MsgBox (numeroEnteroB)

    

    'Asignamos / copiamos el valor de una operacion

    'con una variable en otra (la variable original

    'no es modificada)

    numeroEnteroB = numeroEnteroA + 7


    MsgBox (numeroEnteroA)

    MsgBox (numeroEnteroB)

    

End Sub


Asignamos el valor 1 a la primera variable.

    numeroEnteroA = 1



Asignamos el valor 2 a la primera variable.

    numeroEnteroB = 2


Asignamos el valor de la primera variable a la segunda variable, y mostramos la primera variable, que no cambia de valor.

    numeroEnteroB = numeroEnteroA


Mostramos el valor de la segunda variable, que es igual al de la primera.

El valor anterior se ha perdido, y ya no es posible recuperarlo, al haber sido sobreescrito.

Asignamos la suma del valor de la primera variable más 7 a la segunda variable, y mostramos la primera variable, que no cambia de valor.

    numeroEnteroB = numeroEnteroA + 7


La segunda variable ahora muestra el resultado de la suma del valor de la primera más el 7.

Esto demuestra que antes de asignar el valor, se evalúa la operación que se encuentra a la derecha del signo de asignación.


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.