Visual Basic - comas y puntos. Urgente!!

Life is soft - evento anual de software empresarial
 
Vista:

comas y puntos. Urgente!!

Publicado por Leonardo (2 intervenciones) el 11/06/2006 20:14:07
Necesito ayuda urgente mañana tengo que entregar el programita y me surgió una complicación por la configuración Regional de Windows, el tema que yo puse como valores de referencia dentro de textbox a números con separador decimal al punto (“.”), y si esta configurado de otra manera me salta errores.

Los que necesito es que indistintamente el programa me tome los valores del los texbox, teniendo punto(“.“) o coma (“,”) como separador decimal.


Lo mas próximo que tengo es esto; trate de amoldarlo a lo mío pero me salto u error y hasta ahí llegue. se los paso:

Private Function ReemplazarF(X) As String
Dim NX
Dim NF
NF = F
NX = Format(X, "0.#")
NX = Mid(NX, 1, InStr(1, NX, ",") - 1) & "." & Mid(NX, InStr(1, NX, ",") + 1, Len(Mid(NX, 1, InStr(1, NX, ","))))
While InStr(1, NF, "X") > 0
NF = Mid(NF, 1, InStr(1, NF, "X") - 1) & NX & Mid(NF, InStr(1, NF, "X") + 1, Len(NF))
Wend
ReemplazarF = NF
End Function

En esta función, es importante tener en cuenta algo.
Se han agregado dos variables internas de la función.
Una es "NF" que representa la función modificada al reemplazar el valor de X.
La otra es "NX" que representa el valor de X formateado con el punto (".") como separador decimal, de forma tal que si tenemos Windows configurado para que la coma (",") sea nuestro separador decimal, no existan errores, puesto sea cual fuere la configuración de Windows, internamente en MS Excel (así como en Visual Basic) el punto (".") es el separador de decimales


Bueno Gracias y espero que me salven!! Help mee!!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:comas y puntos. Urgente!!

Publicado por Cecilia Colalongo (3116 intervenciones) el 11/06/2006 21:04:26
No veo donde lees en esa función la configuración regional, puedes hacer:

X=Replace(X,GetLocaleDecimalSep,".")

De esta forma reemplazas en tu variable el separador decimal (sea cual fuere) por el punto.

Public Const LOCALE_SDECIMAL = &HE

Public Declare Function GetUserDefaultLangID Lib "kernel32" () As Integer
Public Declare Function GetUserDefaultLCID Lib "kernel32" () As Long
Public Declare Function GetLocaleInfo Lib "kernel32" Alias "GetLocaleInfoA" (ByVal Locale As Long, ByVal LCType As Long, ByVal lpLCData As String, ByVal cchData As Long) As Long

Public Function GetLocaleDecimalSep() As String
Dim strBuffer As String

strBuffer = String(255, " ")

GetLocaleInfo GetUserDefaultLCID, LOCALE_SDECIMAL, strBuffer, 255

GetLocaleDecimalSep = Trim(Replace(strBuffer, Chr(0), ""))

End Function
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar