HOWTO · VBA
Usar comillas en cadenas en VBA
Demostraremos cómo usar comillas en cadenas en VBA.
En esta página
Para incluir una comilla doble literal dentro de una cadena de VBA, duplica esa comilla en el literal, concatena Chr(34) o guarda el carácter de comilla en una variable de cadena. Los tres métodos producen el mismo carácter; elige el que facilite la lectura del texto que lo rodea.
Cómo representa VBA las comillas en los literales de cadena
Los literales de cadena de VBA empiezan y terminan con comillas dobles. Para incluir una comilla doble como parte de la cadena, escribe dos comillas dobles consecutivas dentro del literal. VBA interpreta ese par como un solo carácter en la cadena resultante. Las comillas exteriores siguen delimitando el literal.
Por ejemplo, la asignación message = "She said, ""Hello, World!""" produce una cadena que contiene She said, "Hello, World!". Las comillas duplicadas del código fuente son sintaxis: no aparecen ambas en el valor. Una comilla simple (') puede aparecer directamente como contenido de una cadena, pero no sustituye las comillas dobles que delimitan los literales de cadena de VBA.
El siguiente ejemplo independiente en Python se ejecutó correctamente y produjo el texto mostrado. Esto confirma únicamente la salida de Python; no ejecuta ni valida la sintaxis de VBA.
Ejecuta este ejemplo de Python:
El código y las etiquetas o salidas visibles de esta sección se mantienen en inglés.
print('She said, "Hello, World!"')
She said, "Hello, World!"
Incluir una comilla duplicándola
Si el texto ya es un literal de cadena de VBA, duplicar las comillas internas suele ser la opción más directa. El procedimiento completo de VBA que aparece a continuación asigna el valor y lo muestra en un cuadro de mensaje. Es una ilustración de sintaxis; el entorno de ejecución configurado no ejecuta VBA, así que no se afirma que este procedimiento haya producido una salida en tiempo de ejecución.
Sub ExampleUsingDoubleQuotes()
Dim message As String
message = "She said, ""Hello, World!"""
MsgBox message
End Sub
El valor de la cadena contiene una comilla antes de Hello y otra después de World!. Mantén juntas las dos comillas del código fuente para cada comilla insertada. Este método funciona bien cuando la frase entrecomillada es fija y el literal sigue siendo legible. Si el texto se construye a partir de fragmentos que cambian, alguno de los métodos de concatenación siguientes puede dejar más clara su composición.
Crear una cadena con Chr(34)
Chr(34) devuelve el carácter asociado al código de carácter 34: una comilla doble. Concatena ese valor entre fragmentos de texto mediante el operador & de VBA. Esto puede facilitar la identificación de dónde van las comillas cuando una cadena contiene varias partes o se construye dinámicamente.
Este procedimiento completo de VBA muestra cómo construir y presentar el texto. El entorno de ejecución disponible no lo ejecuta:
Sub ExampleUsingChrFunction()
Dim message As String
message = "She said, " & Chr(34) & "Hello, World!" & Chr(34)
MsgBox message
End Sub
El texto resultante es el mismo que en el primer ejemplo: She said, "Hello, World!". Los operadores & unen el texto inicial, el carácter de comilla, la frase, la segunda comilla y el texto final. Este método resulta especialmente útil cuando los fragmentos proceden de variables u otras expresiones. Para una frase breve y fija, compáralo con el uso de comillas duplicadas y elige la forma que resulte más fácil de seguir para quien mantenga el código.
Guardar el carácter de comilla en una variable
Si se usa varias veces el mismo carácter de comilla, asígnalo una sola vez a una variable String y concatena esa variable donde haga falta. Para asignar una comilla doble, el propio literal de VBA contiene un par de comillas duplicadas entre sus delimitadores: quote = """".
Este es un ejemplo completo de sintaxis de VBA:
Sub ExampleUsingStringVariable()
Dim quote As String
Dim message As String
quote = """"
message = "She said, " & quote & "Hello, World!" & quote
MsgBox message
End Sub
La variable da nombre al carácter que se reutiliza y mantiene una expresión más larga visualmente uniforme. Puede ser útil cuando un procedimiento construye varios valores entrecomillados. No cambia la sintaxis de los literales de cadena de VBA: estos siguen usando comillas dobles. Si el contenido deseado es una comilla simple, escríbela directamente dentro del literal delimitado por comillas dobles, como en "It's ready".
Elegir un método para la cadena de VBA
Usa comillas duplicadas para un literal breve y fijo, porque así es fácil relacionar el código fuente con el resultado. Usa Chr(34) cuando concatenar varios fragmentos ayude a ver con claridad dónde van las comillas o cuando los fragmentos se calculen. Usa una variable de comilla si el mismo carácter aparece varias veces y darle un nombre mejora la legibilidad.
Los tres métodos construyen una cadena que contiene una comilla doble; ninguno cambia cómo VBA reconoce los delimitadores de un literal de cadena. Los ejemplos muestran la sintaxis y el valor previstos, pero no se han ejecutado como código de VBA en este entorno. Al adaptar uno, mantén equilibrados los delimitadores y revisa el texto resultante en el contexto donde se use la macro.