Estoy construyendo una herramienta en Excel y he protegido el libro de trabajo para que no se permita eliminar o insertar filas / columnas, usando el siguiente código:

Sub ProtectSheet()
ActiveSheet.Protect _
    DrawingObjects:=False, _
    Contents:=True, _
    Scenarios:=False, _
    AllowFormattingCells:=True, _
    AllowFormattingColumns:=True, _
    AllowFormattingRows:=True, _
    AllowInsertingHyperlinks:=True, _
    AllowInsertingColumns:=False, _
    AllowInsertingRows:=False, _
    AllowDeletingColumns:=False, _
    AllowDeletingRows:=False, _
    AllowSorting:=True, _
    AllowFiltering:=True, _
    AllowUsingPivotTables:=True, _
    Password:=cPassword
End Sub

Sin embargo, también quiero que aparezca un cuadro de mensaje si el usuario intenta eliminar o insertar una fila / columna que le dice que no puede hacer esto y proporciona otras instrucciones. ¿Alguien puede aconsejarme sobre cómo hacer esto?

¡Gracias!

1
Kristen 14 ene. 2017 a las 20:15
¿Qué tal si usas un MsgBox antes de que se ejecute tu código?
 – 
Shai Rado
14 ene. 2017 a las 20:30

1 respuesta

La mejor respuesta

Puede usar el evento de cambio de selección como este (código para ir en el módulo de código de la hoja de trabajo):

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    With Target
        If .Address = .EntireRow.Address Or .Address = .EntireColumn.Address Then
            MsgBox "You can not insert or delete any row or column", vbInformation, "FYI"
        End If
    End With
End Sub

Si intentan insertar o eliminar seleccionando filas o columnas enteras (que es lo que normalmente hago), aparecerá este cuadro de mensaje, pero no aparecerá si selecciona rangos de celdas más pequeños.

0
John Coleman 14 ene. 2017 a las 21:00
¡Vaya, muchas gracias! Eso era exactamente lo que necesitaba.
 – 
Kristen
14 ene. 2017 a las 23:08