En Excel Rango B14:B23 seleccionar celda y abrir formulario.

Nuevamente por aquí

Como has leído en el libro, el 2º punto en el cual contiene la Hoja INF la información, solicitud y imagen del error (orror) que me manda jejejjeeejej. Es que abre pero introduzco el 1º dato y para el segundo me dice que el formulario ya esta abierto.

Si tengo que introducir un solo dato o, más de uno, al terminar salir piso Ir Factura pero antes que me deje introducir los datos (producto) que tenga que introducir

1 Respuesta

Respuesta
1

Tienes en tu formulario:

'Range("B14").Select
        'While ActiveCell <> Empty
        '    ActiveCell.Offset(1, 0).Select
        'Wend

Significa que vas seleccionando celda por celda hasta llegar a una celda vacía.

Pero, tienes el evento Worksheet_SelectionChange, en tu hoja, lo que significa que cada vez que seleccionas una celda se activa el evento; y si seleccionas una celda de la columna B, entonces abres el formulario, pero como el formulario ya está abierto, por eso te envía el error.

Lo que se puede hacer es cambiar el código por esto:

    For i = 14 To 23
        If Cells(i, "B") = "" Then
            Application.EnableEvents = False
            Cells(i, "B").Select
            Application.EnableEvents = True
            Exit For
        End If
    Next

De esta forma solamente seleccionamos una celda, la que esté en blanco, pero previamente apagamos los eventos.


Hola DAM

Dejo de enviarme el mensaje que ves en la imagen en el libro pero;

Selecciono cualquier celda del rango B14:B23 y SOLO ingreso un producto, cierro (Ir Factura) y bien pero si ingreso 2 productos o mas, ya al pisar Ir Factura, el formulario se AUTO abre nuevamente solo, ya no pasa si lo cierro por la X.

Otro punto es que si lo cierro y vuelvo a tener que abrirlo, al seleccionar CUALQUIER celda dentro del rango, el form se abre y quisiera que abriera SOLO SI seleccionara una celda VACIA dentro del rango B14:B23.

Gracias

Aclaro:

Otro punto es que si lo cierro y vuelvo a tener que abrirlo, al seleccionar CUALQUIER celda dentro del rango, QUE ESTE OCUPADA O NO.

quiero que SOLO si selecciono alguna vacía

Se tiene que revisar todo el código para controlar cuando abres y cierras el formulario y cuando seleccionas las celdas del rango, recuerda que tiene el evento selectionchange, entonces cada que selecciones una celda de ese rango, en cualquier parte de la macro, el formulario se abre otra vez.

Tendría que probar una y otra vez toda la funcionalidad que tienes en el formulario, pero eso no debe ser condicionante para la respuesta de este tema en particular. Cada petición requiere una pregunta nueva.

Te pregunto si se puede hacer,. creando nueva pregunta

Te cambio el código que pone el código de factura, para que ya no se seleccione la celda.

Private Sub LC_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    Sheets("factura").Activate
        'Range("B14").Select
        'While ActiveCell <> Empty
        '    ActiveCell.Offset(1, 0).Select
        'Wend
    For i = 14 To 23
        If Cells(i, "B") = "" Then
            'Application.EnableEvents = False
            'Cells(i, "B").Select
            'Application.EnableEvents = True
            Exit For
        End If
    Next
    'Si en Factura encuentra la B23 ocupada, manda mensage
    If Range("B23") <> Empty Then
        MsgBox "No hay mas lineas. Inicie nueva factura", vbExclamation + vbOKOnly, "FACTURA LLENA"
        Exit Sub
    Else
        If LC.ListIndex = -1 Then Exit Sub
        Cells(i, "B") = LC.List(LC.ListIndex, 2)
        If Cells(i, "B") <> Empty Then
            Cells(i, "C") = LC.List(LC.ListIndex, 1)
            Cells(i, "D") = LC.List(LC.ListIndex, 7)
        End If
    End If
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas