Problema de diferentes idiomas al insertar fórmulas desde VBA
¿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?
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)"