Txt resultado de una resta

hola nuevamente necesito de su ayuda.

Tengo un userform "caja" con 3 txt

1 txt compra;2 txt efectivo; 3 txt vuelto

Private Sub TXTcompra_Enter()
X = Sheets("CAJA").Range("G2").Value
CAJA.txtcompra.Text = X
End Sub

Private Sub TXTEFECTIVO_Change()
su_suma
End Sub
Private Sub su_suma()
txtvuelto.Text = CDbl(TXTEFECTIVO.Text) - CDbl(txtcompra.Text)
End Sub

El problema es que cuando abro la "caja" me pone el numero en txt compra y al ponerle el txt efectivo con punto me hace cualquier cuenta. Por ej abro y me trae de G2 a txt compra 200,20 si le pongo en txt efectivo 300 anda bien, si pongo 300,20 (con coma)anda bien pero si pongo 300.20 (con punto) me tira cualquiera. Necesito que me ande con punto porque es normalmente lo que usamos. En los otros userform que utilizo para llenar datos (como el de G2) uso Punto pero modifique distintas cosas para que lo pase con coma porque tenia el problema de que pasaba como texto en vez de numero.

Espero se pueda hacer algo

Desde ya muchas gracias

1 respuesta

Respuesta
1

El tema de punto o de coma lo resuelves en la configuración regional de la computadora donde corres el programa:

La ruta es:

Botón Inicio - Panel de Control - Configuración Regional (Dependiendo de la versión que tengas, puedes tener primero un botón de Reloj, Idioma y Región) - Configuración Adicional

Y luego escoges cual quieres que sea el separador de decimales y de miles, das aceptar y listo.

Lo otro que debes hacer es condicionar en tu userform para que no permita datos de texto, solo permita numéricos.

Hola lo del user el tema es que son textbox por eso creo que pasa los datos como texto, lo he ido resolviendo colocándole val o cdbl

con respecto a lo de la coma si le pongo cdbl (como tiene puesto) al poner el punto se emperora y si le pongo Val no me toma los decimales

lo que me explicas lo busque y no es porque si cambio de coma a punto ( no encontré como hacerlo, tengo win XP ) voy a seguir teniendo problema porque en un txt tengo coma y en otro tengo punto.

gracias

Ok, entonces como te decía el problema se resuelve controlando que solo coloquen valores numéricos en el Textbox, estos códigos condicionan que solo puedas colocar numero y el indicador decimal, no permite que coloques el indicador de miles para evitar errores.

Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If Not (KeyAscii >= 48 And KeyAscii <= 57) And KeyAscii <> 46 Then
MsgBox prompt:="Sólo se admiten valores numéricos.", Buttons:=vbInformation + vbOKOnly
KeyAscii = 0
End If
End Sub

provee y anda bien pero no es lo que quiero, necesito que me haga la resta de un numero con coma y otro con punto. a lo mejor no se puede, pero cambiar todo lo anterior por este error no lo veo productivo, prefiero dejarlo asi y usar la coma en vez del punto.

A lo mejor se podrá lo siguiente?: al abrir el user traigo un valor de una celda(G2 que es un numero con coma) al txtcompra si existiera la posibilidad de que lo pase al user con punto resolvería el error (creo)

gracias

La verdad no entiendo lo que dices, el problema que habías planteado era que te colocaban una coma en lugar del punto decimal, esto te generaba un error ya que comparabas un valor numérico con un texto, si controlas para que no te coloquen texto debería resolver el problema.

En todo caso si esto no es lo que necesitas, podrías generar una nueva pregunta en el foro para que otro experto te ayude. Favor finaliza esta pregunta

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas