Cual es la estructura en macro para incluir otra columna Impedir la modificación de celdas editadas en Excel – VBA

Tengo esta macro y permite impedir la modificación en columna 2 pero requiero también en la columna 16. No soy experta. Pero requiero saber la estructura, me pueden ayudar, Gracias

Private Sub Worksheet_Change(ByVal Target As Range)
Dim Celda As Range
For Each Celda In Target
If Celda.Row >= 10 And Celda.Row <= 100000 And Celda.Column = 2 And Celda.Column = 2 Then
Hoja5.Unprotect "IMSS"
Celda.Locked = True
Hoja5.Protect "IMSS"
End If
Next Celda
End Sub

1 Respuesta

Respuesta
1

La estructura sería algo así

Si (fila >= 10   y   fila <= 100000)   y   (columna = 2   ó   columna = 16)

Eso significa que debe estar entre las filas 10 a 100000 y la columna 2 ó la columna 16


Si pones entre las filas 10 a 100000 y la columna 2 y la columna 16, esto significa que la celda modificada debe estar entre las filas 10 a 100000 y en la columna 2 y también en la columna 16, lo cual no es posible, porque una celda está en la columna 2 o está en la columna 16, no puede estar en ambas columnas.


Considerando que la columna 2 es la B y la 16 es la P, entonces quedaría así:

Private Sub Worksheet_Change(ByVal Target As Range)
  Dim rng As Range, celda As Range
  '
  Set rng = Intersect(Target, Rows("10:100000"), Range("B:B, P:P"))
  If Not rng Is Nothing Then
    For Each celda In rng
      Hoja5.Unprotect "IMSS"
      celda.Locked = True
      Hoja5.Protect "IMSS"
    Next
  End If
End Sub

Muchas gracias por tu orientación.

Entonces que otro macro pudiera utilizar para que ambas columnas 2 y 16 una vez registradas las fechas no se puedan modificar. Me pudiera orientar por favor.

Gracias 

Probaste el código que te puse. Es justamente para las columnas 2 y 16

Cambia tu código por el nuevo código:

Private Sub Worksheet_Change(ByVal Target As Range)
  Dim rng As Range, celda As Range
  '
  Set rng = Intersect(Target, Rows("10:100000"), Range("B:B, P:P"))
  If Not rng Is Nothing Then
    For Each celda In rng
      Hoja5.Unprotect "IMSS"
      celda.Locked = True
      Hoja5.Protect "IMSS"
    Next
  End If
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas