MsgBox me aparece al darle click al CommandButton1

Muy buenas tardes, espero no molestarte con esta consulta, ya que el código que me enviaste me funciono de maravilla, quise hacerte esta nueva consulta: aplique el mismo código en otro archivo que tengo la idea es no permitir el ingreso de un numero no mayor o igual que 4 y que no permita dejar pasar al siguiente TextBox si lo dejo en blanco, ahora bien, pude hacer que no me permita el indreso al número no mayor o igual que 4, pero al darle click o enter al CommandButon1 me aparece la ventana del mensaje, y no se porqué, me podrías indicar en donde estoy cometiendo el error y si lo puedo solucionar, espero no te incomode el acudir nuevamente a ti, mi código es el sig:
Private Sub CommandButton1_Click()
Rem inserta un renglon
Fila = 11
Col = 2
While Cells(Fila, Col) <> Empty
Fila = Fila + 1
Wend
Cells(Fila, 2) = Val(TextBox1)
Cells(Fila, 3) = Val(TextBox2)
Cells(Fila, 4) = Val(TextBox3)
Cells(Fila, 5) = Val(TextBox4)
TextBox1 = Empty
TextBox2 = Empty
TextBox3 = Empty
TextBox4 = Empty
TextBox1.SetFocus
End Sub
Private Sub TextBox1_Change()
Range("B11").Select
ActiveCell.FormulaR1C1 = TextBox1
End Sub
Private Sub TextBox2_Change()
If Me.TextBox2.Value <= 4 Then
Else
MsgBox "Debe ingresar un numero del 1 al 4", vbExclamation, "Número Inválida"
TextBox2.SetFocus
SendKeys "{home}+{end}"
End If
End Sub
Private Sub TextBox3_Change()
Range("D11").Select
ActiveCell.FormulaR1C1 = TextBox3
End Sub
Private Sub TextBox4_Change()
Range("E11").Select
ActiveCell.FormulaR1C1 = TextBox4
End Sub
Private Sub TextBox1_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = 27 Then
UserForm2.Hide
End If
End Sub
Private Sub TextBox2_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = 27 Then
UserForm2.Hide
End If
End Sub
Private Sub TextBox3_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = 27 Then
UserForm2.Hide
End If
End Sub
Private Sub TextBox4_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = 27 Then
UserForm2.Hide
End If
End Sub
Private Sub CommandButton1_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = 27 Then
UserForm2.Hide
End If
End Sub
Private Sub TextBox3_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If IsNumeric(TextBox3.Text) Then
TextBox3.Text = Format(TextBox3.Text, "#,##0.00")
Else
TextBox3.Text = "0.00"
End If
End Sub

1 Respuesta

Respuesta
1
Sustituye el siguiente evento del textbox2 por:
Private Sub TextBox2_Change()
If (Val(Me.TextBox2.Value) < 1 Or Val(Me.TextBox2.Value) > 4) And Me.TextBox2.Value <> "" Then
MsgBox "Debe ingresar un numero del 1 al 4", vbExclamation, "Número Inválida"
TextBox2.SetFocus
SendKeys "{home}+{end}"
End If
End Sub
Te Recomiendo que utilices un combo de selección en vez del textbox2. Así el usuario tendrá que obligatoriamente seleccionar una opción del 1 al 4.
También puedes utilizar el siguiente evento del textbox2(KeyPress), la cul restringe la entrada de cualquier tecla diferente de 1 al 4, y eliminas el evento change de este objeto ya que no tendrá efecto.
Private Sub TextBox2_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If KeyAscii <> 8 Then
If KeyAscii < 49 Or KeyAscii > 52 Then
Beep
KeyAscii = 0
End If
End If
End Sub
Muchísimas gracias por toda tu ayuda, ha funcionado tal como lo quería, la otra opción que me das de solo poder presionar las teclas del 1 al 4 también lo prove y me funciona pero prefiero utilizar el primero que me has indicado, ahora bien, quisiera saber más sobre el combo ya que me imagino que es mejor pero no se como programarlo, espero no haberte molestado tanto, quisiera poder aprender más sobre como programar y he buscado manuales en internet para leer y así poder aprender más, pero resulta muy extenso y solo ejemplos básicos pero opciones como las que tu me has dado no las he podido encontrar, nuevamente te agradezco por tu ayuda y colaboración, Att. Enrique Castro

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas