Ver Mensaje Individual
  #5 (permalink)  
Antiguo 03/09/2007, 12:51
Avatar de culd
culd
 
Fecha de Ingreso: noviembre-2003
Mensajes: 959
Antigüedad: 20 años, 6 meses
Puntos: 19
Re: Sumar Valores En Una Caja De Texto

Aca te hice un ejemplo de una funcion que sirve solamente para sumar todos las sumas que tenga un string....

Osea que si en un string (textbox) tenes "10+5+3+6+8+9" la funcion te lo suma. Tambien trabaja con decimales.

No es lo mas optimo, pero sirve, y te puede orientar para enfocarte en otras operaciones y luego hacer recursividad para resolver entre parentesis etc.

Código:
'Programado por CULD
'[email protected]
'Suma de cadenas en un String, es decir que si se quiere sumar
'el string "10+2+5+9+6+3+5+7", la funcion Operacion_Suma devuelve la suma
'de ese string

'TAMBIEN TRABAJA CON DECIMALES, SE PUEDE SUMAR EJ: "0,25+0,75+5"

Public Function Operacion_Suma(Texto As String) As Double
On Error Resume Next 'para evitar error (si se pone 10+10+++++5)
Dim Cantidad As Integer
Dim Suma As Double
Dim X As Integer

Cantidad = Cantidad_Sumas(Texto) 'me fijo cuantas sumas hay
Suma = 0 'inicializo la suma

For X = 1 To Cantidad + 1 'recorro todos los numeros
    Suma = Suma + CDbl(SepararDatos(X, Texto, Asc("+"))) 'sumo los numeros
Next X

Operacion_Suma = Suma 'envio el valor de la suma
End Function

Public Function Cantidad_Sumas(Texto As String)
Dim X As Integer
Dim Cantidad
Cantidad_Sumas = 0 'inicializo la cantidad
For X = 1 To Len(Texto) 'recorro el largo del texto
    If Mid(Texto, X, 1) = "+" Then 'verifico si es una suma
        Cantidad_Sumas = Cantidad_Sumas + 1 'acumulo que se encontro 1 suma
    End If
Next X
End Function

Public Function SepararDatos(ByVal pos As Integer, ByVal Text As String, ByVal SepASCII As Integer) As String
'*****************************************************************
'Devuelve el string del campo
'*****************************************************************
Dim i As Integer
Dim LastPos As Integer
Dim CurChar As String * 1
Dim FieldNum As Integer
Dim Seperator As String
  
Seperator = Chr(SepASCII)
LastPos = 0
FieldNum = 0

For i = 1 To Len(Text)
    CurChar = Mid$(Text, i, 1)
    If CurChar = Seperator Then
        FieldNum = FieldNum + 1
        If FieldNum = pos Then
            SepararDatos = Mid$(Text, LastPos + 1, (InStr(LastPos + 1, Text, Seperator, vbTextCompare) - 1) - (LastPos))
            Exit Function
        End If
        LastPos = i
    End If
Next i

FieldNum = FieldNum + 1
If FieldNum = pos Then
    SepararDatos = Mid$(Text, LastPos + 1)
End If

End Function