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.
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.
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.
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.
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.
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.
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.