Manejo excepciones Visual Basic

Hola
Tengo dos años programando en Java y ahora estoy con un trabajo en el gestor interno de visual en Excel y necesito crear lo que en Java seria un Try... Cath.
Si en el campo de texto meten un dígito diferente de 1 o 2 debe salir el mensaje,
msgbox "Debe introducir un 1 ó 2, vuelva a ingresar el valor"
Pero no se como hacer la captura de la excepción, ¿me podrías ayudar?

1 respuesta

Respuesta
1
De Java sé poco menos que nada, así que no puedo decirte el código que sustituiría al 'try ... cath'.
Si quieres que en la celda B5 sólo pueda haber valores 1 o 2, tendrías que poner este código en el Visual Basic (<Alt><F11>) de la página Excel correspondiente:
Option Explicit
Dim snChequeando As Boolean
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If snChequeando Then Exit Sub
    chequearB5
End Sub
Private Sub chequearB5()
    If Cells(5, 2) <> "1" And Cells(5, 2) <> "2" Then
        MsgBox "Sólo puede teclearse 1 o 2 en la fila 5 columna 2 (B5)"
        snChequeando = True
        Cells(5, 2).Select
        snChequeando = False
    End If
End Sub
No estoy del todo convencido de haberte entendido correctamente. Si no es así, insiste en tu pregunta.
Si entiendo, seré un poco más clara, si ejecuto este código me funciona
resultado# = Val(campoIngresos.Text) / Val(campoMiembros.Text)
If resultado# < 15000 Then
   MsgBox "Señor usuario usted si califica para la beca y le toca un monto de XXXXXX"
ElseIf resultado# >= 15000 Then
   MsgBox "Señor usuario lo ciento no califica para la beca ya que el ingreso promedio por persona es de " & resultado
Else
   MsgBox "Los datos introducidos son incorrectos, verifique los datos por favor"
End If
Pero si por alguna razón alguien introduce algo diferente a un numero en algún campo de texto el programa se cae, no funciona, quiero saber como "Programo a prueba de tontos" en visual basic, como evitar que ese error suceda
Tienes varias formas:
1) Comprobar que el contenido del campo sea un número. Antes de hacer los cálculos puedes preguntar: "if isnumeric(nombreDelCampo) then ..."
2) Ejecutar tus operaciones controlando los errores. Es menos ortodoxa pero también funcionaría:
    on error resume next
    resultado# = Val(campoIngresos.Text) / Val(campoMiembros.Text)
    if err<>0 then ..................
    on error goto 0
3) La más sencilla para el usuario: controlar que sólo puedan pulsar una tecla numérica o el borrado:
Private Sub NOMBREDELCAMPO_KeyPress(KeyAscii As Integer)
    ' Controlamos que nos tecleen sólo caracteres válidos
    If KeyAscii >= 48 And KeyAscii <= 57 Then Exit Sub  ' Los números
    If KeyAscii = Asc(".") Then Exit Sub  ' El punto para los decimales (si quieres cámbialo por coma)
    If KeyAscii = 8 Then Exit Sub ' La tecla de borrado.
    ' Las demás teclas no las admitiremos. Daremos un par de pitidos y
    ' anularemos la tecla pulsada
    Beep
    Beep
    KeyAscii = 0
End Sub
No me has comentado si te funcionó lo que te planteé.
Lo siento, la verdad es que para cuando recibí la respuesta ya era un poco tarde, pero ahí me queda para implementarlo más adelante, gracias de todos modos

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas