Setfocus a un textbox de acuerdo a MsgBox

Tengo un formulario con dos textbox: "sistolica" y "diastolica". He colocado código para que dependiendo del valor de "sistolica" aparezca un mxgbox que me pregunte si el valor (>200) es correcto o no. Si respondo SI entonces paso a "diastolica"; si respondo NO regreso o me quedo en "sistólica" para corregir el dato. El asunto es que algo que me parecía de rutina no funciona ya que siempre me pasa a "diastólica" responda SI o NO

Este es el ejemplo del código (he hecho varias variaciones y lo he puesto al perder el enfoque, al salir, al cambiar...) pero no funciona y no se por qué.

Private Sub Sistolica_LostFocus()
If Sistolica.Value > 200 Then
mensaje = (MsgBox("La presión sistólica es de " & (Sistolica) & " mmHg" & vbCrLf & "¿Es correcta esta cifra?", vbYesNo Or vbQuestion, "Valor fuera de rango"))
If mensaje = vbYes Then
Me.diastolica.SetFocus
Else
Me.Sistolica.SetFocus
End If
End If

End Sub

2 respuestas

Respuesta
1

En el evento 'perder el foco' el valor ya se ha guardado en el campo activo, no es el evento adecuado.

Si se hace en el evento 'Antes de actualizar' se puede simplificar un poco, en el apartado 'Buttons' se pueden 'sumar' características (o el valor equivalente a la suma).

Por ejemplo: mostrar dos botones para respuestas + el icono de interrogación

Private Sub Sistolica_BeforeUpdate(Cancel As Integer)
If Me.Sistolica <= 200 Then Exit Sub
If MsgBox("La presión sistólica es de " & Me.Sistolica & " mmHg" & vbCrLf & "¿Es correcta esta cifra?", vbYesNo + vbQuestion, "Valor fuera de rango") = vbNo Then
      Me.Sistolica.Undo
      Cancel = True
      End If
End Sub
Respuesta

Revise está línea

mensaje = (MsgBox("La presión sistólica es de " & (Sistolica) & " mmHg" & vbCrLf & "¿Es correcta esta cifra?", vbYesNo + vbQuestion, "Valor fuera de rango"))

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas