Abrir formulario doble en celda

¿Cómo aperturo un formulario desde una celda? Este formulario registra unos datos que se alamacenan en otra hoja del libro

El formulario debe pasar a estado de ocupado cuando este se cierre y cargar de la hoja registrada el reporte de datos que se van almaenar en la hoja de la foto..

Las celdas pasan a protegidas que para ponerlas disponibles se digita una clave..

Gracias

Paso el código y una imagen

Sub OcuparDesocuparReservar()
Application.ScreenUpdating = False
Dim celda As Range
Set celda = ActiveCell
If Not celda.Offset(0, 3) = "" Then
   Select Case celda
      Case ""
               Case "DISPONIBLE"
         UsClien.Habitacion = celda.Offset(0, 3)
         Registrado = False
         UsClien.Show
         If Registrado = True Then
            'desprotege hoja
            'ActiveSheet.Unprotect "5"
            celda = "OCUPADA"
            celda.Interior.Color = RojoPálido
           ' ActiveSheet.Protect "5"
         End If
      Case "OCUPADA"
         res = InputBox("La habitación está OCUPADA, quieres ponerla como DISPONIBLE ?" & 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(3), 3) Then
            'ActiveSheet.Unprotect "5"
            celda = "DISPONIBLE"
            celda.Interior.Color = vbGreen
           ' ActiveSheet.Protect "5"
        ' Else
           ' MsgBox "Los números de habitación no corresponden", vbExclamation, "SALIDA"
         End If
          ActiveCell.Select
   End Select
End If
End Sub

y una imagen

1 Respuesta

Respuesta
1

 H   o  l a:

Envíame la última versión de tu archivo.

Mi correo [email protected]

En el asunto del correo escribe tu nombre de usuario “alba sol” y el título de esta pregunta.

graxcias

sr dante

Ya se lo envíe a su correo,, el más actualizado que tengo hasta el momento

Me toco hacer un botón para llamar al formulario por que no di con la celda,

Gracias

Para abrir el formulario debes dar doble click sobre le número de habitación (columna C)

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    If Not Intersect(Target, Range("C5:C40")) Is Nothing Then
        Application.DisplayAlerts = False
        OcuparDesocuparReservar
        Target.Offset(0, 3).Select
    End If
    '
    'If Not Intersect(Target, Range("e5:e40")) Is Nothing Then
    ' LimpezaMantenimiento
    'Cancel = True
    'Exit Sub
    'End If
End Sub

Código para verificar ocupación:

Sub OcuparDesocuparReservar()
'Por.Dante Amor
    Application.ScreenUpdating = False
    Dim celda As Range
    Set celda = ActiveCell
    w_habita = Cells(celda.Row, "C")   'habitación
    w_estado = Cells(celda.Row, "F")   'estado
    Select Case w_estado
        Case ""
        Case "DISPONIBLE"
            UsClien.Habitacion = celda.Offset(0, -2)
            Registrado = False
            UsClien.Show
            If Registrado = True Then
                'desprotege hoja
                ActiveSheet.Unprotect "5"
                Cells(celda.Row, "F") = "OCUPADA"
                Cells(celda.Row, "F").Interior.Color = RojoPálido
                ActiveSheet.Protect "5"
            End If
        Case "OCUPADA"
            res = InputBox("La habitación está OCUPADA, quieres ponerla como DISPONIBLE ?" & vbCr & vbCr & _
            "Digita la clave para activarla disponible  :", "A T E N C I Ó N. SALIDA DE HUESPED")
            If res = "" Then Exit Sub
            If Val(res) = w_habita Then
                ActiveSheet.Unprotect "5"
                Cells(celda.Row, "F") = "DISPONIBLE"
                Cells(celda.Row, "F").Interior.Color = vbGreen
                ActiveSheet.Protect "5"
            End If
    End Select
End Sub

Y para registrar:

    'On Error Resume Next
    If TextBox1 = "" Then
        MsgBox "Captura nombre del Huésped", vbOKOnly + vbInformation, "AVISO"
        TextBox1.SetFocus
        Exit Sub
    End If
    Dim FilaVacia As Long
    Dim combo11
    Dim text13
    With ThisWorkbook.Sheets("USUARIOS")
        .Unprotect "5"
        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) = Me.ComboBox14
        .Range("r" & FilaVacia) = Me.ComboBox15
        .Range("S" & FilaVacia) = Date
        .Range("t" & FilaVacia) = Time
        .Range("u" & FilaVacia) = 1
        .Range("v" & FilaVacia) = Me.TextBox4.Text
        .Range("w" & FilaVacia) = Me.TextBox14.Text
        .Range("x" & FilaVacia) = Me.TextBox16.Text
        .Range("y" & FilaVacia) = Me.TextBox5.Text
        .Range("z" & FilaVacia) = Me.ComboBox3
        .Range("aa" & FilaVacia) = Me.ComboBox4
        If Me.ComboBox11 <> "" Then combo11 = CDbl(Me.ComboBox11) Else combo11 = ""
        .Range("ab" & FilaVacia) = combo11
        If Me.TextBox13 <> "" Then text13 = CDbl(Me.TextBox13) Else text13 = ""
        .Range("ac" & FilaVacia) = text13
        .Protect "5"
        Registrado = True
        MsgBox "datos registrados correctamente"
    End With
    Unload Me
End Sub

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

Disculpe sr dante

pero el registro en el form esta directo?,, pues el botón de registrar no funciona, esya como inactivo, en el nuevo código no veo el código para activar el botón de comando..

El label caption me registra la habitación por eje como 1 y es 101,, ¿dónde le modifico para que en el form aparezca 101?

Gracias, pero esta excelente

Hola

Ya pude arreglar lo del botón pero el label captio me registra son números de una sola cifra

ylos nmeros de las habitaciones son de 3 cifras,, donde modifico el código para camiar el label

Nota: cuando se carga el formulario para registrar, la hoja queda bloqueada, cuando este desaparece resgistrando los datos. Ok perfecto

Pero para volverla disponible se hace doble clic para digigtar la clave para ponerla disponible, pero la hoja queda bloquea y hay que desbloquerla,,, ¿dónde modifico el unprotec? Para que esto no suceda,, ¿es decir pdoder desbloquear la celda sin tender que desbloquear la hoja?

Yo te recomiendo que la hoja esté bloqueada y todos los cambios los realices desde formularios.

ok

solucionado el desbloueo

pero el label caption sigo sin entenderlo,, em sale solo una cifra y son 3 cifras

Cambia esta línea:

UsClien.Habitacion = celda.Offset(0, -2)

Por esta:

UsClien.Habitacion = w_habita

sal u dos

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas