Excel - Validar textbox, tratar números como texto, permitir máximo dos decimales.

 
Vista:

Validar textbox, tratar números como texto, permitir máximo dos decimales.

Publicado por Raziel (245 intervenciones) el 03/01/2015 20:44:17
Estimados todos:

Feliz año nuevo a todos, lleno de retos y metas cumplidas...

Me permito escribirles porque no se como resolver los siguientes problemas: Tengo un formulario con muchos textbox, la información capturada en el formulario la pego en una hoja de Excel a modo de base de datos.

Textbox1: En él capturo números que quiero que sean tratados como texto ya que no realizaré ninguna operación con ellos, de modo que al momento de pasar la información del textbox a la celda, aparezca tal cual fue capturada (incluyendo ceros a la izquierda),¿cómo logro que esto suceda?

Textbox2: En él capturo números, quiero limitar (en tiempo de ejecución) la cantidad de decimales que se puedan teclear, en este caso 2 como máximo (Format(variable,"0.00") no me sirve porque redondea y no deseo redondear).

De antemano les agradezco el tiempo invertido en la lectura de la presente y en la ayuda que me puedan prestar.

Saludos!
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
Imágen de perfil de LaO

Validar textbox, tratar números como texto, permitir máximo dos decimales.

Publicado por LaO (67 intervenciones) el 09/01/2015 17:22:30
Hola Raziel,

Para lo que necesitas indico el código con los correspondientes eventos.

1- Textbox1 - Numeros como texto
---------------------------------------------------------------->

Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
Dim n
Dim nTarget As Double

'vars
n = Asc(Application.DecimalSeparator)

'get key pressed
Select Case Asc(KeyCode)

Case 8, n, 48 To 57
KeyCode = KeyCode

Case Else
KeyCode = 0

End Select
End Sub

*** Pasar dato a celda con un botón:
Private Sub CommandButton1_Click()

Sheets(1).Range("A1") = Chr(39) & TextBox1.Text

End Sub

2- Textbox2 - Numeros con decimales
---------------------------------------------------------------->

Private Sub TextBox2_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)

Dim n
Dim nTarget As Double

'vars
n = Asc(Application.DecimalSeparator)

'get key pressed
Select Case Asc(KeyCode)

Case 8, n, 48 To 57
KeyCode = KeyCode

Case Else
KeyCode = 0

End Select

End Sub

*** Evento salir del textbox el cual redondea siempre a dos decimales sin importar cuantos coloque el usuario.

Private Sub TextBox2_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Dim n As Double

n = Round(Val(TextBox2), 2)
TextBox2 = n

End Sub

---------------------------------------------------------------->

Bien, espero esto te sirva de 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