Insertar fórmulas en Excel desde macros VBA sin preocuparte por el separador de argumentos: coma o punto y coma

Insertar fórmulas en Excel con macros independientemente del idioma o separador d

En tutorial anterior vimos cómo insertar fórmulas desde Excel usando macros, las cuales dentro de la macro se podían escribir usando el idioma de tu Office o usando el nombre de las funciones en Inglés. En un video más reciente, donde veíamos cómo resaltar filas al momento de escribir valores en un TextBox, me reportaban que al ejecutar la macro les salía un error número 5, que indica que hay un error en la llamada a un procedimiento.

Error 5 al usar una fórmula que no identifica el separador de argumento.

Figura 1. Error 5 al usar una fórmula que no identifica el separador de argumento.

Hubo varios comentarios donde reportaban el mismo error. Gracias al comentario de un seguidor del canal, pudimos resolver que el tema era por el separador de argumentos en la fórmula. El tutorial de resaltar filas manda llamar al Formato condicional y configura una fórmula que determina cuáles filas se deben resaltar.

Separador de argumentos o listas: coma o punto y coma

Aquí el tema es que configuré la macro para que la fórmula se insertara usando la coma como separador de argumentos, ya que aquí en México ese es el separador. Países como España, usan punto y coma como separador de argumento. Entonces si la macro la corren en una PC que tiene punto y coma como separador, obtendrán ese error.

Ver video Insertar fórmulas con VBA independientemente del idioma o separador de argumentos

Suscríbete al canal de EXCELeINFO en YouTube para aprender más de Excel y macros.

Valida qué separador de argumentos tienes en tu computadora

La forma más sencilla de validar qué separador de argumentos tienes configurador en tu computadora, es simplemente ingresando una función en un celda y ahí verás qué carácter pide como separador.

Separarador de argumetos en Excel

Figura 2. Validar separador de argumentos en Excel.

La otra manera es por medio del Panel de Control de Windows. Ahí se puede validar incluso cambiarlo.

  • Usa la combinación de teclas Windows + R.
  • Escribes Control y das Enter.
  • Te vas a Reloj y región > Cambiar formatos de fecha, hora y número.
  • En el formulario da clic en Configuración adicional.
  • En Separador de listas verás el separador.

Ver o modificar el separador de listas y argumento en el Panel de Control de Windows.

Figura 3. Ver o modificar el separador de listas y argumento en el Panel de Control de Windows.

Insertar fórmulas desde macros que se adecúen al separador de tu PC

Bien, todo lo anterior fue informativo para ahora continuar con lo técnico. Si no deseas preocuparte sobre qué separador tienen las personas que usarán tu archivo tienes tres opciones.

Usando Application.International

Para el ejemplo de resaltar filas usaremos la propiedad Application.International y usaremos el argumento xlListSeparator para obtener el separador configurado en la PC y la fórmula lo usará.

Aquí usamos la coma como separador:

strFormula = "=ENCONTRAR(MAYUSC(""" & UCase(Valor) & """),MAYUSC($D10))"

Y aquí usamos la propiedad International para asignar el separador a la fórmula:

Separador = Application.International(xlListSeparator)
strFormula = "=ENCONTRAR(MAYUSC(""" & UCase(Valor) & """)" & Separador & "MAYUSC($D10))"

Usar Formula en lugar de FormulaLocal

Ahora bien, si gustas de insertar fórmulas en celdas, puedes usar las siguientes propiedades:

  • Formula: ingresa una fórmula en un rango y se debe escribir en Inglés dentro de la macro.
  • FormulaLocal: ingresa una fórmula en un rango y la puedes ingresar en el idioma configurado en tu PC.

La ventaja de usar Range.Formula es que usaremos la coma como separador de argumentos y funcionará incluso si tienes punto y compa como separador.

Y si usamos FormulaLocal debemos poner manual el separador de argumento o usar la propiedad Application.International para detectarlo.

Sub FormulaIngles()

Hoja1.Range("G12").Formula = "=IFNA(VLOOKUP(E12,A8:B20,2,0),""ID no existe"")"

End Sub

Sub FormulaLocal()

Separador = Application.International(xlListSeparator)

Hoja1.Range("G15").FormulaLocal = "=SI.ND(BUSCARV(E15" & Separador & "A8:B20" & _
    Separador & "2" & Separador & "0)" & Separador & """ID no existe"")"

End Sub

Tutoriales donde puedes aplicar estos Tips

Insertar Fórmulas y funciones en celdas de Excel usando VBA y macros
Resaltar filas mientras se escribe usando Formato condicional, VBA y macros en Excel – PARTE 1

 

Si te gustó este tutorial por favor regístrate en nuestra Lista de correo y Suscríbete a nuestro canal de YouTube para que estés siempre enterado de lo nuevo que publicamos.

You may also like...