Problema de diferentes idiomas al insertar fórmulas desde VBA

Resuelto Edgar Navasardyan asked hace 8 años • 1 respuestas

¿Entiendo correctamente que si uso un comando como

Set myRange.formula = “=ROW(mySheet!R12)” 

mi macro provocará que #NAME?aparezcan errores en las celdas si se ejecuta, por ejemplo, en Excel ruso. Quiero decir que en este caso la fórmula anterior debería estar codificada como

Set myRange.formula = “=СТРОКА(mySheet!R12)”

donde СТРОКА es el análogo ruso de la función SUMA. No anticiparía que Excel fuera lo suficientemente inteligente como para traducir las fórmulas en tiempo de ejecución. Entonces, ¿hay alguna forma de evitar esto y, lo más importante, cuál es el código más genérico para que la macro funcione correctamente independientemente del idioma?

Edgar Navasardyan avatar Mar 01 '16 20:03 Edgar Navasardyan
Aceptado

VBA está muy centrado en EN-US. .Formula y .FormulaR1C1 de VBA esperan la función FILA . Para utilizar 'sabores' de funciones de idioma regional como СТРОКА , entonces se debe emplear la propiedad Range.FormulaLocal o la propiedad Range.FormulaR1C1Local .

Lo mismo se aplica a los caracteres separadores de listas. Utilice una coma (por ejemplo ,, ) para separar los argumentos de una función cuando utilice .Formula o .FormulaR1C1 independientemente de la configuración regional del sistema. Si su sistema utiliza un punto y coma (por ejemplo, ;) como carácter separador de lista, solo debe usarse con .FormulaLocal o .FormulaR1C1Local.

El resultado en la hoja de trabajo reflejará correctamente la configuración de idioma de la instalación de Office.

myRange.Formula = "=ROW(mySheet!$12:$12)"
myRange.FormulaR1C1 = "=ROW(mySheet!R12)"
myRange.FormulaLocal  = "=СТРОКА(mySheet!$12:$12)"
myRange.FormulaR1C1Local= "=СТРОКА(mySheet!R12)"
 avatar Mar 01 '2016 13:03