Por que el condicional If no funciona?

Ahora, tengo 1 duda. Quiero poner un condicional If para que los textbox de mi formulario se llenen obligatoriamente y tengo este código:

Private Sub CommandButton2_Click()
If TextBox1 = Empty Or TextBox2 = Empty Or TextBox3 = Empty Or TextBox4 = Empty Then
MsgBox "Campos vacios. VERIFIQUE", vbOKOnly, "Mensaje para el usuario"
Else
Worksheets("BasedelTB").Activate
Range("B8").Select
Do While Not IsEmpty(ActiveCell)
ActiveCell.Offset(1, 0).Activate
Loop
ActiveCell.Offset(0, 0) = Label12.Caption
ActiveCell.Offset(0, 1) = Label39.Caption
For Each J In RegistroTB.Controls

If TypeName(J) = "TextBox" Then
J.Value = ""
End If
Next
MsgBox "Datos capturados correctamente", vbOKOnly, "Mensaje para el usuario"
ThisWorkbook.Save
End Sub

Pero al probarlo y dejar textbox vacíos, me sale le mensaje que le coloque primero y después el ultimo mensaje que puse: "Datos capturados correctamente". Por lo tanto el condicional no me funciona, y la instrucción que le di después tampoco.

¿Cómo puedo arreglar este problema?

Respuesta
1

h o l a

Prueba esto.

Private Sub CommandButton2_Click()
If TextBox1 = Empty Or TextBox2 = Empty Or TextBox3 = Empty Or TextBox4 = Empty Then
MsgBox "Campos vacios. VERIFIQUE", vbOKOnly, "Mensaje para el usuario"
Exit Sub
End If
'
Worksheets("BasedelTB").Activate
Range("B8").Select
Do While Not IsEmpty(ActiveCell)
ActiveCell.Offset(1, 0).Activate
Loop
'
ActiveCell.Offset(0, 0) = Label12.Caption
ActiveCell.Offset(0, 1) = Label39.Caption
For Each J In RegistroTB.Controls
If TypeName(J) = "TextBox" Then
J.Value = ""
End If
Next
'
MsgBox "Datos capturados correctamente", vbOKOnly, "Mensaje para el usuario"
ThisWorkbook.Save
End Sub

Hola Adriel, te agradezco mucho tu respuesta. Voy a probarla, pero antes me gustaría preguntar si la ' significa algo, esto para aprender y quizá agregarla a otros procedimientos que he hecho y que puedan funcionar.

Y ya aprovechando tu atención, en este caso solo tengo 4 textbox, pero si quiero que por cada textbox que tengo vacío en el formulario (se entiende que existen muchos textbox, unos 25) me mande un mensaje y no me deje continuar con la rutina, ¿cómo puedo hacerlo sin tener que escribir todos los textbox a verificar?

H o l a 

usa esto 

Private Sub CommandButton2_Click()
For Each J In Me.Controls
If TypeName(J) = "TextBox" Then
    If J.Value = "" Then
        MsgBox "Campos vacíos", vbCritical, "AVISO"
        Exit Sub
    End If
End If
Next
'
Worksheets("BasedelTB").Activate
Range("B8").Select
Do While Not IsEmpty(ActiveCell)
ActiveCell.Offset(1, 0).Activate
Loop
'
ActiveCell.Offset(0, 0) = Label12.Caption
ActiveCell.Offset(0, 1) = Label39.Caption
For Each J In RegistroTB.Controls
If TypeName(J) = "TextBox" Then
J.Value = ""
End If
Next
'
MsgBox "Datos capturados correctamente", vbOKOnly, "Mensaje para el usuario"
ThisWorkbook.Save
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas