VALIDAR TextBox si esta vacío que sea Igual a "0" (cero)

Hoy vine de una pregunta tras otra. Lo que pasa que cuando voy armando me salen nuevos problemas!.

En mis preguntas anteriores y pregunte sobre como multiplicar dos TextBox.

Bueno ahora resulta que si el textBox (donde va el porcentaje, que se llama txtporcentaje) esta vacío me tita "ERROR EN EL DEPURADOR". Pero si le pongo 0 (cero) me funciona perfectamente. Como hago para validad txtporcentaje. Osea si esta vacío que sea igual a 0 (cero) a la hora de calcular.

1 Respuesta

Respuesta
1

Pon esto, por ejemplo, en el evento exit del control

Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)

if textbox1.value ="" then textbox1.value =0

End Sub

Recuerda finalizar y puntuar amigo.

Perdón!. No me funciona! Tal vez lo hago mal. Te describo como tengo el control que calcula los textBox y el de txtporcentaje.

Private Sub CommandButton1_Click()

txtanticipo = Format((txtmontooriginal * txtporcentaje / 100), "$ ##,##0.00")
txtmontocertificado = Format((txtmontooriginal * txtavance / 100), "$ ##,##0.00")

Sheets(ComboBox1.Value).Range("b19") = txtobra
Sheets(ComboBox1.Value).Range("b21") = txtexpediente
Sheets(ComboBox1.Value).Range("b25") = txtmontooriginal
Sheets(ComboBox1.Value).Range("b31") = txtanticipo
Sheets(ComboBox1.Value).Range("b27") = txtmontoampliado
Sheets(ComboBox1.Value).Range("b23") = txtresolucion
Sheets(ComboBox1.Value).Range("b33") = txtinicio
Sheets(ComboBox1.Value).Range("b29") = txtadeendas
Sheets(ComboBox1.Value).Range("b39") = txtavance
Sheets(ComboBox1.Value).Range("b43") = txtmontocertificado
Sheets(ComboBox1.Value).Range("b37") = txtfin
Sheets(ComboBox1.Value).Range("b45") = txtsituacion
MsgBox "LOS CAMBIOS FUERON GUARDADOS"
End Sub

Y

Private Sub txtporcentaje_Change()
End Sub

COMO SERIA LO QUE VOS DECÍS??. EN DONDE COLOCAS EL EVENTO QUE DECÍS PARA QUE SEA  txtporcentaje CON VALOR 0 (cero) SI NO COLOCAN NINGÚN NUMERO.

GRACIAS!!!

Pon tu macro así:

Private Sub CommandButton1_Click()

For Each c In Me.Controls

If TypeName(c) = "TextBox" Then

c.Value = 0

End If

next

txtanticipo = Format((txtmontooriginal * txtporcentaje / 100), "$ ##,##0.00")

txtmontocertificado = Format((txtmontooriginal * txtavance / 100), "$ ##,##0.00")
Sheets(ComboBox1.Value).Range("b19") = txtobra
Sheets(ComboBox1.Value).Range("b21") = txtexpediente
Sheets(ComboBox1.Value).Range("b25") = txtmontooriginal
Sheets(ComboBox1.Value).Range("b31") = txtanticipo
Sheets(ComboBox1.Value).Range("b27") = txtmontoampliado
Sheets(ComboBox1.Value).Range("b23") = txtresolucion
Sheets(ComboBox1.Value).Range("b33") = txtinicio
Sheets(ComboBox1.Value).Range("b29") = txtadeendas
Sheets(ComboBox1.Value).Range("b39") = txtavance
Sheets(ComboBox1.Value).Range("b43") = txtmontocertificado
Sheets(ComboBox1.Value).Range("b37") = txtfin
Sheets(ComboBox1.Value).Range("b45") = txtsituacion
MsgBox "LOS CAMBIOS FUERON GUARDADOS"
End Sub

Rectifico: Este código, lo tienes que poner en el evento INITIALIZE del formulario.

For Each c In Me.Controls
If TypeName(c) = "TextBox" Then
c.Value = 0
End If
next

De esta manera al arrancar el formulario, todos los textbox tendrán un cero

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas