Validar campos y no permitir ingreso de datos en celda

Espero que me puedan ayudar con la siguiente macro.

Estoy tratando de diseñar una macro que: si celda D15 = "Diagnostico", entonces no permita el ingreso de datos en el rango D56:D58, si hay ingreso de datos en alguna de esas celdas que aparesca mensaje "Ingreso de datos no validar para la selección" y que borre los datos de ese rango.

Intente hacer algo sacando algunos ejemplos de internet, pero no me resulta completamente, a veces funciona y otras veces no.

Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(ActiveCell, Range("D56:d58")) Is Nothing Then
 If ([d15] = "Diagnostico") And Target.Value <> "" Then
Target.Value = ""
 MsgBox "Campo no valido para este tipo de evaluación", vbCritical + vbOKOnly"
End If
End If
End Sub

1 Respuesta

Respuesta
2

Quedaría con esto:

Private Sub Worksheet_Change(ByVal Target As Range)
'Por.Dante Amor
    If Not Intersect(Target, Range("D56:D58")) Is Nothing Then
        If Range("D15") = "Diagnostico" Then
            MsgBox "Ingreso de datos no válida para la selección"
            Application.EnableEvents = False
            Target.Value = ""
            Application.EnableEvents = True
        End If
    End If
End Sub

Pero si copias 2 celdas y las pegas en d56, te permitiría pegar los datos.

Entonces para validar también ese tipo de ingreso de datos, quedaría así:

Private Sub Worksheet_Change(ByVal Target As Range)
'Por.Dante Amor
    Set r = Range("D56:D58")
    If Not Intersect(Target, r) Is Nothing Then
        If Target.Count > 100 Then Exit Sub
        For Each c In Target
            If Not Intersect(c, r) Is Nothing Then
                If c.Value <> "" Then
                    If Range("D15") = "Diagnostico" Then
                        MsgBox "Ingreso de datos no válida para la selección"
                        Application.EnableEvents = False
                        c.Value = ""
                        Application.EnableEvents = True
                    End If
                End If
            End If
        Next
    End If
End Sub

'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas