Excel - busqueda registros con formulario

 
Vista:

busqueda registros con formulario

Publicado por erik (17 intervenciones) el 18/09/2007 00:50:48
Hola un saludo, tengo una duda respecto al uso de los Textbox, para realizar consultas en listas de numeros.
Tengo realizado un formulario donde puedo introducir un nombre de un producto en un textbox, y cuatro diferentes precios tambien cada uno con un textbox.
le puse un boton para que cuando coloque todos los datos me los agrege en una lista ya definida.
Esto funciona my bien le coloco la funcion val(textbox) para que me coloque la informacion en las celdas en formato de numero.
El problema es cuando le agrege dos botones mas para consulta y modificacion.
Si realiza la busqueda de registros pero los textbox que deberian mostrar los precios de los productos me aparecen con coma en vez de punto decimal.

ejemplo un precio que es 104.50 me aparece en la busqueda dentro del textbox como
104,50 si solo realizo la busqueda no hay problema. pero si quiero hacer una modificacion al precio me los guarda en la lista como numeros enteros.

Yo creo que es porque toma la coma y no el punto decimal. Si vuelvo a teclear los precios con el punto decimal si los graba correctamente.

mi pregunta es si en las celdas de mi hoja estan con punto decimal porque el textbox lo lee como si tiviera una coma.

Casi estoy seguro que la primera vez que use este codigo si colocaba los numeros con punto decimal en las busquedas que realice, pero ahora no se puede, ya revice la configuracion del idioma y numeros en la pc y todo esta bien.

mi codigo de la busqueda es el siguiente, y el de moficar tambien.

Private Sub CommandButton3_Click()
'BOTON BUSQUEDA
Sheets("FACTURA").Select
Range("M4").Select
On Error GoTo noencontro
Range("M4:M500").Find(What:=TextBox9, After:=ActiveCell, LookIn:=xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False).Activate

TextBox1 = ActiveCell
TextBox3 = ActiveCell.Offset(0, 1).Value
TextBox4 = ActiveCell.Offset(0, 2)
TextBox5 = ActiveCell.Offset(0, 3)
TextBox6 = ActiveCell.Offset(0, 4)
TextBox7 = ActiveCell.Offset(0, 5)
TextBox8 = ActiveCell.Offset(0, 6)
TextBox10 = ActiveCell.Offset(0, 7)

noencontro:
End Sub

Private Sub CommandButton4_Click()
Rem REGISTRO SIGUIENTE
On Error GoTo noencontro
Range("M4:M500").Find(What:=TextBox9, After:=ActiveCell, LookIn:=xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False).Activate

TextBox1 = ActiveCell
TextBox3 = ActiveCell.Offset(0, 1).Value
TextBox4 = ActiveCell.Offset(0, 2)
TextBox5 = ActiveCell.Offset(0, 3)
TextBox6 = ActiveCell.Offset(0, 4)
TextBox7 = ActiveCell.Offset(0, 5)
TextBox8 = ActiveCell.Offset(0, 6)
noencontro:

End Sub

Private Sub CommandButton5_Click()
Rem MODIFICAR PRODUCTOS
ActiveCell.Value = TextBox1
ActiveCell.Offset(0, 1).Value = Val(TextBox3)
ActiveCell.Offset(0, 2).Value = Val(TextBox4)
ActiveCell.Offset(0, 3).Value = Val(TextBox5)
ActiveCell.Offset(0, 4).Value = Val(TextBox6)
ActiveCell.Offset(0, 5).Value = Val(TextBox7)
ActiveCell.Offset(0, 6).Value = Val(TextBox8)
ActiveCell.Offset(0, 7).Value = Val(TextBox10)

End Sub

Cualquier comentario se los agradecere. muchas gracias
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:busqueda registros con formulario

Publicado por Fernando (231 intervenciones) el 18/09/2007 02:21:51
Erik, hace un tiempo atrás me encontré con la misma problematica que tienes.

Sabes, lo mejor es aplicar la función Format, el siguiente es una linea de mi formulario.
Lo que se hace es aplicar un formato de celda por código, es bastante util, hace se elimina el problema de la coma o el punto en los textbox.

ActiveCell.Offset(0, 2).Value = Format(CUADRO_SUELDO.Text, "#,##0")

donde CUADRO_SUELDO.Text es un control tipo textbox.

Saludos,
Fernando.
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

RE:busqueda registros con formulario

Publicado por JuanC (792 intervenciones) el 18/09/2007 13:08:28
un valor como 3,14 te lo guarda como entero 3 porque Val() utiliza
el punto como separador decimal
podrías usar CDbl aunque esta función también tiene sus problemas...
también con Format, como dice Fernando
personalmente alguna vez me hice una función tStrToDbl
que unifica las funciones Val y CDbl, permitiendo usar . y , indistintamente...

'//By JuanC 2006

'-----------------------------------------
' Convierte una cadena en número (double)
'-----------------------------------------
Public Function tStrToDbl(ByVal sNumber As String) As Double
Dim s$
s = RemoveLetters(Trim(sNumber))
tStrToDbl = Val(s)
If InStr(s, ".") > 0 Then tStrToDbl = Val(s)
If InStr(s, ",") > 0 Then
If Not IsNumeric(s) Then
tStrToDbl = 0
Else:
tStrToDbl = CDbl(s)
End If
End If
End Function

'------------------------------------------------------------------------------------------------------------
'Elimina todos los caracteres que no pueden formar parte
'de un número decimal (positivo o negativo)
'------------------------------------------------------------------------------------------------------------
Private Function RemoveLetters(ByVal sString As String) As String
Dim cArray() As String
Dim i&, l&, stmp$, c1%, c2%, c3%, lCount&
l = Len(sString)
For i = 1 To l
ReDim Preserve cArray(i)
cArray(i) = Mid(sString, i, 1)
Next
lCount = UBound(cArray())
For i = 1 To lCount
If cArray(i) Like "[!0-9-.,]" Then
cArray(i) = ""
End If
Next

For i = 1 To lCount
If cArray(i) = "," Then c1 = c1 + 1
If cArray(i) = "." Then c2 = c2 + 1
If cArray(i) = "-" Then c3 = c3 + 1
If cArray(i) = "," And c1 > 1 Then GoTo siga
If cArray(i) = "." And c2 > 1 Then GoTo siga
If cArray(i) = "-" And c3 > 1 Then GoTo siga
If cArray(i) = "-" And i > 1 Then GoTo siga
If Len(cArray(i)) > 0 Then
stmp = stmp & cArray(i)
End If
siga:
Next
Erase cArray
RemoveLetters = stmp
End Function

Saludos desde Baires, JuanC
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

RE:busqueda registros con formulario

Publicado por erik (17 intervenciones) el 18/09/2007 15:05:18
Muchas gracias por sus respuestas, tanto a Fernando como a Juan, voy a probar las dos formas y ver cual lo resuelve.
Un saludo desde Veracruz, ver. méxico.
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

RE:busqueda registros con formulario

Publicado por frany (58 intervenciones) el 15/11/2009 20:58:06
Gracias JuanC por tus códigos , e son de gran ayuda.
Un saludo.
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