¿Cómo bloquear celdas con datos con una macro?

El buen Dante Amor me ha ayudado con un caso que está acabando conmigo. Si el o alguien más puede seguir ayudándome se los agradeceré.

Seguí el código que me dejó en mi pregunta anterior.

Macro para seleccionar datos de una hoja y pegarlos en otras hojas del mismo libro

Hice una pequeña modificación porque omití comentar (para variar) que tengo un "pie de página" y no me funcionaba el buscar la última línea con datos. Lo que hice fue:

For j = 1 To h1.Cells(1, Columns.Count).End(xlToLeft).Column Step 2
    u = 10
        For i = 2 To h1.Cells(Rows.Count, j).End(xlUp).Row
            If h1.Cells(i, j + 1) <> 0 Then
                Set h2 = Sheets(h)
                u = u + 1
                If u < 11 Then u = 11
                h2.Cells(u, "A") = h1.Cells(i, j)
            End If
        Next
        h = h + 1
    Next

Pero ahora necesito que las celdas de los formatos que se copiaron se bloqueen y posteriormente se proteja la página.

Según yo eso lo tendría que hacer del End If, pero no estoy seguro y la verdad no tengo idea de cómo hacerlo.

En concreto, teniendo el rango A11:A53, necesito bloquear las celdas con datos y luego proteger la hoja con contraseña.

Y ya por último cuando quiera ejecutar otra vez mi macro cómo haría para desproteger, ¿desbloquear celdas y borrar datos para actualizar los datos?

1 Respuesta

Respuesta
1

H o l a:

No estoy seguro de lo que haces cuando modificaste la macro las instrucciones:

u = 10

u = u + 1

Pero si te funciona, entonces no dije nada.

Te anexo la macro para desproteger y proteger las hojas, le puse de password "abc", cambia ese password por el que desees.


Sub SeleccionarCodigos()
'Por.Dante Amor
    Application.ScreenUpdating = False
    Set h1 = Sheets(1)
    h = 2
    For j = 1 To h1.Cells(1, Columns.Count).End(xlToLeft).Column Step 2
        u = 10
        For i = 2 To h1.Cells(Rows.Count, j).End(xlUp).Row
            If h1.Cells(i, j + 1) <> 0 Then
                Set h2 = Sheets(h)
                h2.Unprotect "abc"
                'u = h2.Range("A" & Rows.Count).End(xlUp).Row + 1
                u = u + 1
                If u < 11 Then u = 11
                h2.Cells(u, "A") = h1.Cells(i, j)
                h2.Cells(u, "B") = h1.Cells(i, j + 1)
                h2.Protect "abc"
            End If
        Next
        h = h + 1
    Next
    Application.ScreenUpdating = True
    MsgBox "Proceso terminado"
End Sub

¡Gracias! Funcionando perfecto. Hice la modificación porque solo puedo incluir datos en el rango A11:A53 ya que en A54 comienza un "pie de página" que, como ocupa una tabla de varias líneas, no lo pude agregar mediante la configuración de página, entonces el código que me hiciste favor de hacer se iba hasta después de ese pie de página. La verdad no se si haya un mejor método pero si funciona jeje

Una duda más, si en mi hoja1 el número de códigos (filas) disminuye, ¿Cómo puedo hacer para que antes de que llene las nuevas cantidades en los formatos se borren los datos que ya tenía? o que borre todo lo que tenga en el rango A11:A53 de todos los formatos y luego haga el proceso que ya se tiene... Gracias!

H o l a:

Prueba de con esta macro:

Sub SeleccionarCodigos()
'Por.Dante Amor
    Application.ScreenUpdating = False
    Set h1 = Sheets(1)
    h = 2
    For j = 1 To h1.Cells(1, Columns.Count).End(xlToLeft).Column Step 2
        u = 10
        Set h2 = Sheets(h)
        h2.Unprotect "abc"
        h2.Range("A11:A53").ClearContents
        For i = 2 To h1.Cells(Rows.Count, j).End(xlUp).Row
            If h1.Cells(i, j + 1) <> 0 Then
                'u = h2.Range("A" & Rows.Count).End(xlUp).Row + 1
                u = u + 1
                If u < 11 Then u = 11
                h2.Cells(u, "A") = h1.Cells(i, j)
                h2.Cells(u, "B") = h1.Cells(i, j + 1)
            End If
        Next
        h2.Protect "abc"
        h = h + 1
    Next
    Application.ScreenUpdating = True
    MsgBox "Proceso terminado"
End Sub

sal u dos

¡Gracias! Iba por buen camino pero lo ubicaba mal :(

Ahora si ¡CASO RESUELTO!  pronto molestaré pero ya con otro tema que me está atorando

Saludos experto!!!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas