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

Preguntas similare

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
Respuesta Responder a este mensaje
#2 Héctor Miguel
07/08/2003 - 08:25 | Informe spam
Hola, Francisco Javier !

==> Me alegra que te sirviera :)) =>y Gracias por el "feed-back"<
P.D. ... pendiente el caso de las valores de cero en las graficas, y del msgbox [...]



==> ... recuerdo que quedo pendiente alguna prueba de tu parte. (por aqui seguimos) :))
_______
Saludos,
Héctor.
MS-MVP
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida