Cuadro de texto con 2 decimales (formato)

Tengo una consulta sobre poner formato con 2 decimales a un cuadro de texto, pero nada,, me explico,, tengo un formulario vb con excel,,, y un cuadro de texto llamado Pago y quisiera cuando ponga por ejemplo,, en el cuadro de texto 600 automáticamente se agregue 2 decimales 600.00 y cuando ponga 650.5 aparezca 650.50,,,, he internado varias formas como:

Pago.Value = Format(Pago, "#,##0.00") y nada ,,,,

hasta vi por la web que ponian algo asi

Private Sub Pago_Change()
Dim val As Decimal = 0

If Pago.TryParse(Pago.Text, val) Then

Pago.Text = val.ToString("N2")

Else

Pago.Text = ""

End If

End Sub

aqui me marca error en la fila Dim val As Decimal = 0 y no se por que,,.

2 Respuestas

Respuesta
4

Esta instrucción que te está enviando error

Dim val As Decimal = 0

Es por las siguientes causas

1. El tipo de dato "Decimal" no existe en VBA en Excel, tal vez tomaste el código de alguna otra versión de VB. Para utilizar decimales puedes declarar una variable como tipo "Single" o como tipo "Double".

2. La palabra "val" es una palabra reservada para VBA, por lo tanto, no te recomiendo que la utilices.

3. Cuando declaras una variable en VBA no puedes igualarla o ponerle un valor.

4. Por último, te recomiendo que no declares las variables, VBA declara todas las variables como tipo "Variant", sólo en algunos casos es preciso declararlas, pero cuando el código que utilizas es muy simple no te preocupes por declarar la variable, VBA lo hace por ti.


El formato del textbox Pago, no lo pongas en el evento Change, te va a dificultar la captura, es mejor que lo pongas en el evento Exit, puede ser así:

Private Sub Pago_Exit(ByVal Cancel As MSForms.ReturnBoolean)
'Por.DAM
    Pago = Format(Pago, "#,##0.00")
End Sub

De esta forma terminas la captura y cuando pasas a otro control el formato se pone en automático.


Otra cosa que te recomiendo es poner una validación en el control Pago, para que solamente acepte números y el punto; de esta forma el formato se pueda apreciar mejor. Pon lo siguiente en el código de tu formulario:

Private Sub pago_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
'Por.Dante Amor
    Select Case KeyAscii
        Case 46, 48 To 57 'números (.0123456789)
        Case Else: KeyAscii = 0
    End Select
End Sub

Saludos.Dante Amor

No olvides valorar la respuesta.

Respuesta
3

Las instrucciones para un Textbox1, que te colocará el pto de miles y la coma decimal (aunque en la instrucción veas los separadores al revés)

Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
TextBox1 = Format(TextBox1, "#,##0.00")
End Sub

Luego, para pasar el contenido del control a la hoja y que sea dato numérico válido, debes utilizar la función de conversión CDbl. Por ej:

Private Sub CommandButton1_Click()
ActiveCell = CDbl(TextBox1.Value)
End Sub

Sdos

Elsa

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas