Veran, tengo un proyecto pendiente . Es un programa que resuelve equaciones de segundo grado en adelante.
El problema está que visual basic reconoce el punto "." como indicador de que es un numero decimal
8.9
Pero si opera con ellos , lo transforma en ","
Quiero decir que si tengo 2 textbox y tienen que sumarse sus valores siendo los valores 3 + 3.4
Al darle al comand button , el resultado que aparecera en unnuevo comand box sera :
6,4
Sustituye el punto por la coma. De esa forma si deseo seguir operando para continuar con la operación matematica , visual basic reconoce el 6,4 como 64 y no da el resultado correcto.
He pensar en reemplazar el valor , por un . cada vez que salga , pero no se como.
Sabrian decirme alguna solucion?
antes de resolver la ecuacion cambia , por .
Si bueno.. eso es evidente ya lo dije yo mismo , pero COMO??
Replace
:http://msdn.microsoft.com/en-us/library/bt3szac5%28VS.80%29.aspx
Saludos
Replace(TuValor, ",", ".")
No acavo de entender exactamente como funciona esa funcion. xD Algun ejemplo?
Gracias por todo.
Private Sub Form_Load()
Dim valor As Currency
valor = "1750,58"
MsgBox Replace(valor, ",", ".")
End Sub
mm vale, pero para poder canviarlo en TODOS los textbox que tengo ??
Puedo hacer una Public Function y especificar que sea donde sea que aparezca una , se transforme a . ??
si., pero la verdad la funcion replace es tan corta y sensilla que casi es al cuete crear una funcion aparte, con solo Text1.text = Replace(Text1.text, ",", ".") es suficiente, creo por ahi me equivoco...
Mira lo mejor que puedes hacer es declarar variables como currency o double, y alli en esa variable guardas el valor del número que deseas usarlo para reemplazar la coma por el punto, luego dicho resultado lo asignas al text que corresponda!
De verdad ya te dimos la solución, no es posible que no sepas como hacerlo!
No es tan sencillo.... almenos yo no lo veo así.
Los resultados de la formula de la equacion de segundo grado van saliendo , ya que es un proyecto visual. De nada me sirve declarar variable para remplazar 1 vez la coma por el punto , necesito saber como hacerlo siempre , `Para que este marcado en todo el programa.. , ya que sino , como explico en el primer post , el programa hace una operacion , que sale en un nuevo txtbox , i si ese numero va en decimal , lleva una , y la coma no la reconoce como separacion entre entero y decimal , por lo tanto no puede seguir operando correctamente.
Private Sub Text1_Change()
Text1 = Replace(Text1, ",", ".")
End Sub
Private Sub Text2_Change()
Text2 = Replace(Text2, ",", ".")
End Sub
No se si funcione bien lo acabo de hace con el Block de Notas...
Corregido: Solo ingresa numeros con coma decimal el codigo te devuelve la suma con las comas decimales pertinentes.
Private Sub Form_Load()
Dim res As String
res = SumaFormatodecimal(3, "3,454.456,45", "3,454.456,45")
Call ReplacePuntoPorcomaDescimal(res)
Call MsgBox(res)
End Sub
Public Function SumaFormatodecimal(ParamArray Numeros()) As String
Dim Num As Variant
Dim Aux As String
For Each Num In Numeros
Aux = Num
Call ReplaceComaDescimal(Aux)
SumaFormatodecimal = Val(SumaFormatodecimal) + Val(Aux)
Next
End Function
Public Sub ReplaceComaDescimal(ByRef ValStr As String)
ValStr = Replace(ValStr, ",", "")
End Sub
Public Sub ReplacePuntoPorcomaDescimal(ByRef ValStr)
Dim spl() As String
Dim LenAfter as integer
spl = Split(CStr(ValStr), ".")
LenAfter = IIf(IniArray(spl), Len(spl(1)), 0)
ValStr = FormatNumber(ValStr, LenAfter, vbTrue, vbTrue, vbTrue)
End Sub
Public Function IniArray(varArray() As String) As Boolean
On Error Resume Next
If ((Not varArray) = -1) Then
IniArray = False
Else
IniArray = True
End If
End Function
Dulces Lunas!¡.
para los textbox haces un for each
mira esta pagina:
http://www.recursosvisualbasic.com.ar/htm/trucos-codigofuente-visual-basic/163-for-each-deshabilitar-frame.htm
Muchas gracias , tanto al ejemplo como al aporte , me ha servido , empezare a hacerlo..
Gracias