Que botón de userform seleccione hoja la desproteja y proteja Hoja sin moverse de la hoja donde se ejecuta

Tengo una rutina que hace que la información que se escriba en el user form se deposite en cierta hoja diferente a donde se ejecuta el userform. . . . Es la siguiente :

Private Sub cmdAceptar_Click()
Dim uf
If TextBox1 = "" Then
MsgBox ZINGRESA, vbInformation + vbOKOnly, ZCOPYRIGHT
Exit Sub
End If
If Application.CountIf(Worksheets("Productos").Range("a:a"), TextBox1) Then
MsgBox "                                   " & TextBox1 & vbCrLf & vbCrLf & "**  ESTE CODIGO YA EXISTE, INGRESA UNO DIFERENTE  **", vbCritical, ZCOPYRIGHT
Exit Sub
End If
uf = Sheets("Productos").Range("A" & Cells.Rows.Count).End(xlUp).Row + 1
Sheets("Productos").Range("A" & uf) = TextBox1.Value
Sheets("Productos").Range("B" & uf) = TextBox2.Value
Sheets("Productos").Range("C" & uf) = TextBox3.Value
TextBox1 = ""
TextBox2 = ""
TextBox3 = ""
TextBox1.SetFocus
End Sub

El dilema que tengo es que no se como decirle que desproteja primero y proteja después de que deposite la información en la hoja especificada, es decir "Sheets ("Productos"), ya que ese userform y dicha rutina los ejecuto desde varias hojas distintas sin que se mueva de la hoja donde se ejecuta, todo funciona bien, pero ahora por necesidad debo poner contraseña a esa hoja, la contraseña la definí como una rutina (utiProtege y utiDesprotege) que uso en otras hojas.

1 respuesta

Respuesta
2

H o l a:

Quedaría así.

Cambia "abc" por el password que desees.

Private Sub cmdAceptar_Click()
    Dim uf
    If TextBox1 = "" Then
    MsgBox ZINGRESA, vbInformation + vbOKOnly, ZCOPYRIGHT
    Exit Sub
    End If
    If Application.CountIf(Worksheets("Productos").Range("a:a"), TextBox1) Then
    MsgBox "                                   " & TextBox1 & vbCrLf & vbCrLf & "**  ESTE CODIGO YA EXISTE, INGRESA UNO DIFERENTE  **", vbCritical, ZCOPYRIGHT
    Exit Sub
    End If
    '
    'Aquí desproteges
    Sheets("Productos").Unprotect "abc"
    uf = Sheets("Productos").Range("A" & Cells.Rows.Count).End(xlUp).Row + 1
    Sheets("Productos").Range("A" & uf) = TextBox1.Value
    Sheets("Productos").Range("B" & uf) = TextBox2.Value
    Sheets("Productos").Range("C" & uf) = TextBox3.Value
    'aquí proteges
    Sheets("Productos").Protect "abc"
    '
    TextBox1 = ""
    TextBox2 = ""
    TextBox3 = ""
    TextBox1.SetFocus
End Sub

':)
':)

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas