Después de que se de clic a aceptar me envíe a una celda

Tengo la siguiente macro:

Private Sub Worksheet_Change(ByVal Target As range)
For Each Cell In range("U2:U100")
If Cell.Value = "Error" Then
MsgBox "Favor ingrese una cuenta en la columna V"
Cell.Select
End If
Next

End Sub

Pero, como hacer para que en vez de que vaya, después de dar clic, a la celda U vaya a la celda Q.

1

1 respuesta

Respuesta
1

Cambia tu código por este:

Private Sub Worksheet_Change(ByVal Target As Range)
Set RANGO = Application.Intersect(Target, Range("U:U"))
On Error Resume Next
If Not RANGO Is Nothing And RANGO = "Error" Then
     MsgBox "Favor ingrese una cuenta en la columna V"
     Target.Offset(0, -4).Select
End If
Set RANGO = Nothing
End Sub

Disculpa, hice una corrección, esta es la macro:

Private Sub Worksheet_Change(ByVal Target As Range)
Set rango = Application.Intersect(Target, Range("U1:U10000"))
On Error Resume Next
If Not rango Is Nothing Then
If rango = "Error" Then MsgBox "Favor ingrese una cuenta en la columna V"
Target.Offset(0, -4).Select
End If
Set rango = Nothing
End Sub

No me funciona, quizás haya olvidado mencionar que el valor error en la celda no se ingresa, sino se obtiene por una fórmula al no ingresar todos los datos, la celda muestra el texto error.

¿Cuál es la fórmula?

=si(Y($a2<>0;$b2<>"");"Error";"")

En ese caso escribe este código:

Private Sub Worksheet_Change(ByVal Target As Range)
Set rango = Application.Intersect(Target, Range("A1:B10000"))
If Not rango Is Nothing Then
'Evaluamos las celdas: columna 1 ("A") y columan 2 ("B") que cumplan las condiciones indicadas
    If Cells(Target.Row, 1) <> 0 And Cells(Target.Row, 2) <> "" Then
        MsgBox "Favor ingrese una cuenta en la columna V"
        Cells(Target.Row, 22).Select
    End If
End If
Set rango = Nothing
End Sub

Esta macro se ejecutará cada vez que ingreses o modifiques los datos de las celdas de las columnas "A" y "B" .

Ya no es necesario escribir la fórmula.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas