Proteger hojas sin perder el vinculo 2

"para Dante Amor"

Tengo un problema
Ya instale el código en el nuevo archivo más actualizado,,
trate de hacerlo con el de limpieza pero no lo pude cuadrar bien,,,
el de borrar creo que ya no es utili, ¿cierto?

Pero ese no es el inconveniente
Es que no me esta registrando los datos desde el el formulario, solo me registra 2, cuando llamo el form desde la celdas

Realice por favor el ejemplo, haciendo por lo menos 4 registros en el formulario cargándolo desde la celda disponible,, solo digite el nombre y clic en registrar,, no es necesario llenar todo el formulairo
le envío el archivo adjunto actualizado al correo

Mismo usuario, mismo passs

Muy agradecido

1 Respuesta

Respuesta
2

En esta parte estás haciendo obligatorio el textbox1

    If TextBox1 = "" Then
        MsgBox "Coloca algun dato para Ingresar", vbOKOnly + vbInformation, "AVISO"
        TextBox1.SetFocus
        Exit Sub
    End If

En esta parte pones el textbox, lo pones en la columna D

.Range("d" & FilaVacia) = Me. TextBox1.Text

Lo que significa que tienes que buscar la filavacía en la columna D, de esta forma:

FilaVacia = .Range("D" & Rows.Count).End(xlUp).Row + 1

La macro completa:

Private Sub CommandButton1_Click(): On Error Resume Next
    If TextBox1 = "" Then
        MsgBox "Coloca algun dato para Ingresar", vbOKOnly + vbInformation, "AVISO"
        TextBox1.SetFocus
        Exit Sub
    End If
    Dim FilaVacia As Long
    With ThisWorkbook.Sheets("USUARIOS")
        FilaVacia = .Range("D" & Rows.Count).End(xlUp).Row + 1
        .Range("b" & FilaVacia) = Format(FilaVacia - 4, "00000")
        .Range("c" & FilaVacia) = Me.TextBox2.Text
        .Range("d" & FilaVacia) = Me.TextBox1.Text
        .Range("e" & FilaVacia) = Me.ComboBox5
        .Range("f" & FilaVacia) = Me.ComboBox1
        .Range("g" & FilaVacia) = Me.ComboBox7
        .Range("h" & FilaVacia) = Me.ComboBox10
        .Range("i" & FilaVacia) = Me.ComboBox9
        .Range("j" & FilaVacia) = Me.TextBox8.Text
        .Range("k" & FilaVacia) = Me.TextBox11.Text
        .Range("l" & FilaVacia) = Me.TextBox12.Text
        .Range("m" & FilaVacia) = Me.TextBox10.Text
        .Range("n" & FilaVacia) = Me.TextBox9.Text
        .Range("o" & FilaVacia) = Habitacion
        .Range("p" & FilaVacia) = Me.ComboBox2
        .Range("q" & FilaVacia) = Date
        .Range("r" & FilaVacia) = Time
        .Range("s" & FilaVacia) = Me.TextBox4.Text
        .Range("t" & FilaVacia) = Me.TextBox5.Text
        .Range("u" & FilaVacia) = Me.ComboBox3
        .Range("v" & FilaVacia) = Me.ComboBox4
        .Range("w" & FilaVacia) = CDbl(Me.ComboBox11)
        .Range("X" & FilaVacia) = CDbl(Me.ComboBox8)
        Registrado = True
        MsgBox "datos registrados correctamente"
    End With
    Unload Me
End Sub

'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias

Gracias sr dante

Pero no logro implementar el código en el sublimpeza()

Decidí dejarlo así pero al estar protegida la hoja esta celda no se activa,, y no se donde desblouearla,, y eso me produce cambios y errores en la celda disponible/ocupada

Saludos sr dante

En el modulo 1 en la seccionlimpeza NO logro adaptar el código de la sección anterior (dispon/ocupa), pues también hay otro que dice borrar,, aunque este creo que ya no es necesario, solo los 2 primeros, disponile/ocupa que ya están listos y las 2 celdas debajo que no puedo codificar bien,, no se en donde me equivoco,, de resto esta todo bien
Creo que el problema esta en las contraseñas para las hojas limpeza/mantenimeinto, haré otro intento a ver.

ME QUEDO ASÍ:

Sub LimpezaMantenimiento()
Application.ScreenUpdating = False
Dim celda As Range
Set celda = ActiveCell
If Not celda.Offset(-2) = "" Then
   Select Case celda
      Case ""
         celda = "LIMPIEZA"
         celda.Interior.Color = vbCyan
      Case "LIMPIEZA"
         UsClien.Habitacion = celda.Offset(-2)
         Registrado = False
         If Registrado = True Then
            'desprotege hoja
            ActiveSheet.Unprotect "abc"
            celda = "LIMPIEZA"
            celda.Interior.Color = RojoPálido
            ActiveSheet.Protect "abc"
         End If
         Case "MANTENIMIENTO"
         res = InputBox("La habitación está OCUPADA, quieres ponerla como limpieza ?" & vbCr & vbCr & _
                        "Digita la clave para activarla disponible  :", "A T E N C I Ó N. SALIDA DE HUESPED")
         If res = "" Then Exit Sub
         If res = Left(celda.Offset(-1), 3) Then
            ActiveSheet.Unprotect "abc"
                  celda = "MANTENIMIENTO"
         celda.Interior.Color = OroViejo
            Else
            MsgBox "Los números de habitación no corresponden", vbExclamation, "SALIDA"
         End If
   End Select
End If
End Sub
         'celda = ""
         'celda.Interior.ColorIndex = vbgray

Pero me las pone en limpieza pero no en mantenimiento.. y no me pide el pass para ponerla en limpieza nuevamente

Vamos por partes.

Te estoy explicando por qué no encuentras la siguiente fila vacía.

Esta es tu petición:

"Pero ese no es el inconveniente
Es que no me esta registrando los datos desde el el formulario, solo me registra 2, cuando llamo el form desde la celdas"

La macro limpieza corresponde a otra petición.

Con gusto reviso tu macro, pero deberás valorar esta respuesta y crear una pregunta por cada petición.


Para desproteger la macro, tienes que poner la instrucción antes de afectar la hoja, afectas la hoja y después proteges la hoja.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas