separador de argumentos

05/08/2003 - 22:12 por JR | Informe spam
Hola Grupo, Tengo un problema,
He desarrollado una serie de macros en las cuales defino formulas para
realizar ciertas actividades algo asi como:

Range("C5").FormulaLocal = "=T(SI(DERECHA(E5) = CARACTER(73), DERECHA(E5),
SI(DERECHA(E5) = CARACTER(80), DERECHA(E5), ) ) )"

El problema no es la formula, funciona bien,
el problema es que cuando esta macro la ejecuto en otra maquina que tiene
instalado el utilizar los agumentos de " ; "en vez de " , " me genera un
error.

Cambiando la configuracion regional este problema se soluciona, pero para
que otras personas utilicen estas macros aun no concen este proceso,
mi pregunta es, como puedo por codigo VBA Cambiar la Configuracion de los
argumentos al que yo necesito.

Gracias.
JR
 

Leer las respuestas

#1 Héctor Miguel
06/08/2003 - 05:30 | Informe spam
¿Que tal, Francisco Javier?

... macros ... formulas ... como: Range("C5").FormulaLocal = "=T(SI(DERECHA(E5) = CARACTER(73), [...]
... la formula funciona bien, el problema es cuando ... la ejecuto en otra maquina que utiliza ... ";"en vez de "," [...]
... como puedo por codigo VBA Cambiar la Configuracion de los argumentos al que yo necesito.



==> En vez de "cambiarle al usuario" su configuracion del separador de argumentos (por si se te olvidara "regresarselo")...
puedes "atrapar" el que esta "en uso" en una variable de tipo String y usando Application.International(xlListSeparator)
Lo anterior implica que en tu codigo deberas sustituir "tu" separador por una cadena "apropiada", p.e.
== "dentro" del codigo que ya utilizas = Dim sL As String
sL = Application.International(xlListSeparator)
Range("c5").FormulaLocal = _
"=T(Si(Derecha(e5)=Caracter(73)" & sL & "Derecha(e5)" & sL & "Si(Derecha(e5)=Caracter(80)" & sL & "Derecha(e5))))"

==> Otra (posible) solucion seria sustituir la propiedad "FormulaLocal" por la propiedad "Formula"
Excel-VBA se encargara de "traducirla" al entorno en el que se esta ejecutando (incluyendo el separador de argumentos)
Pero... implica "escribir en ingles" las funciones (dentro del codigo), p.e. la FormulaLocal que usas quedaria como sigue:
== "mismo" codigo que utilizas = Range("c5").Formula = "=T(If(Right(e5)=Char(73),Right(e5),If(Right(e5)=Char(80),Right(e5))))"

==> Cuando necesitas "dejar" formulas en rangos con funciones por codigo, (generalmente) funciona bien "Formula" (en ingles)
... salvo algunas excepciones que REQUIEREN del lenguaje y separador "en uso", como los Formatos Condicionales (p.e.).
_______
Saludos,
Héctor.
MS-MVP

Preguntas similares