Macro para proteger celdas con datos

Muchas gracias por su labor. He recibido mucha ayuda con sus foros. Pero tengo un problema con la siguiente macro que debe proteger las celdas con valores después de ingresarlos.

El problema que se me ha generado un bucle y se me repite el inputbox para ingresar el dato cuando solo debería pedírmelo una vez.

Les comento: desde una columna con una lista desplegable se pueden elegir nombre. Al elegir uno debería saltar el inputbox para ingresar un valor en la columna siguiente. Pero me sigue saltando el inputbox y se sigue corriendo de columnas.

¿Cómo puedo hacer que al elegir de la lista desplegable solo me salte una vez el inputbox para ingresar el valor?

Private Sub Worksheet_Change(ByVal Target As Range)

Dim N1 As String

If Intersect(Target, Range("B1:CP150000")) Is Nothing Then

Exit Sub

Else
If Target.Value <> "" Then
Target.Select
ActiveCell.Offset(0, 1).Select
N1 = InputBox("N° de Personas")
ActiveCell.Value = N1
ActiveCell.Offset(0, 1).Select
Call Comentario
ActiveCell.Offset(0, -1).Select
ActiveSheet.Unprotect "123"
Selection.Locked = True
End If
ActiveSheet.Protect "123", DrawingObjects:=True, Contents:=True, Scenarios:=True
ActiveSheet.EnableSelection = xlUnlockedCells

End If
End Sub

2 respuestas

Respuesta
1

Prueba lo siguiente:

Private Sub Worksheet_Change(ByVal Target As Range)
'
    Dim N1 As String
    If Intersect(Target, Range("B1:CP150000")) Is Nothing Then
        Exit Sub
    End If
    '
    If Target.Value <> "" Then
        Target.Select
        ActiveCell.Offset(0, 1).Select
        N1 = InputBox("N° de Personas")
        '
        ActiveSheet.Unprotect "123"
        Application.EnableEvents = False
            ActiveCell.Value = N1
            ActiveCell.Offset(0, 1).Select
            Call comentario
            ActiveCell.Offset(0, -1).Select
            Selection.Locked = True
        Application.EnableEvents = True
        ActiveSheet.Protect "123", DrawingObjects:=True, Contents:=True, Scenarios:=True
        ActiveSheet.EnableSelection = xlUnlockedCells
    End If
End Sub

.

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

.

Avísame cualquier duda

.

Respuesta

[Hola 

Prueba así 

Private Sub Worksheet_Change(ByVal Target As Range)
'
'**Act. Adriel Ortiz
'
    Dim N1 As String
    If Intersect(Target, Range("B1:CP150000")) Is Nothing Then
    Exit Sub
    Else
        Application.EnableEvents = False
        If Target.Value <> "" Then
            Target.Select
            ActiveCell.Offset(0, 1).Select
            N1 = InputBox("N° de Personas")
            ActiveCell.Value = N1
            ActiveCell.Offset(0, 1).Select
                Call Comentario
            ActiveCell.Offset(0, -1).Select
            ActiveSheet.Unprotect "123"
            Selection.Locked = True
            Application.EnableEvents = True
        End If
    '
    ActiveSheet.Protect "123", DrawingObjects:=True, Contents:=True, Scenarios:=True
    ActiveSheet.EnableSelection = xlUnlockedCells
    '
    End If
End Sub

Valora la respuesta para finalizar saludos!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas