Armar procedimiento para bloquear celdas en excel con macros

Necesito bloquear muchas celdas en excel y repetir el código por lo cual quiero armar un procedimiento y pasar el valor de las celdas por parámetros. Muchas de las celdas están combinadas formando una sola.

El problema es que cuando intento armar el procedimiento aparece un error: que la propiedad LOCKED no se puede usar con la clase Range.

Les paso el código que funciona muy bien:

ActiveSheet.Unprotect "1"
If Not IsEmpty(Range("M21")) Then
ActiveSheet.Range("G21:I21").Locked = True
ActiveSheet.Range("J21:L21").Locked = True
ActiveSheet.Range("J21:L21").Locked = True
ActiveSheet.Range("M21").Locked = True
Else
End If
ActiveSheet.Protect "1"

Pero el problema está cuando hago

Public Sub Bloquear (Byval celda1 As String;Byval celda2 As String)

ActiveSheet.Unprotect "1"
If Not IsEmpty(Range("M21")) Then
ActiveSheet.Range(celda1).Locked = True
ActiveSheet.Range(celda2).Locked = True
Else
End If
ActiveSheet.Protect "1"

1 Respuesta

Respuesta
1

Pues revise el código y lo único extraño que encontré fue el punto y coma con que separas los parámetros, debe ser coma. O quizás es tu versión de vb.

Al llamar la función desde otro sub, y si la celda m21 no este vacía, funciona perfecto

Sub xx()
 Bloquea "G21:I21", "J21:L21"
End Sub
Public Sub Bloquea(ByVal celda1 As String, ByVal celda2 As String)
 ActiveSheet.Unprotect "1"
 If Not IsEmpty(Range("M21")) Then
 ActiveSheet.Range(celda1).Locked = True
 ActiveSheet.Range(celda2).Locked = True
 Else
 End If
 ActiveSheet.Protect "1"
End Sub

desde donde llamas la función?, quizás no estas enviado correctamente los parámetros

Si necesitas mas ayuda o tienes cualquier duda me avisas. No se te olvide finalizar la pregunta.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas