Error al cargar formulario en Excel

Dante nuevamente solicito tu apoyo con este formulario de ingresos de productos.

Cuando cargo el formulario por primera vez agrega normal los productos pero quiero volver a ingresar y me envía el error te adjunto una imagen del formulario y el código que utilizo ayúdame en ver en que lado esta el error por que no lo encuentro

Cuando voy a la hoja de ingresos cargo el formulario cargo por primera vez y se ingresa sin ningún problema pero cuando vuelvo a cargar el formulario me bota del Excel con error que se ven en la imagen he intentado cambiando variables al activar la hojas
Le explico como funciona el formulario de ingresos se carga el formulario la lista esta en List box para agregar el nombre del proveedor y el nombre del producto una vez que tiene producto se cargan a los List box que están mas abajo para que al final se carguen a la hoja de Excel

'Hoja4.Activate
    On Error Resume Next
    Me.TextBox1.Text = Format(CInt(TextBox1.Text), "0000000")
    'Me.txtNoFactura.Text = Format(CInt(txtNoFactura.Text), "0000000")
    Err.Clear
    If Trim(Me.TextBox1.Text) = "" Or Trim(Me.TextBox1.Text) = " " Then MsgBox ("Ingresar Nro Factura!!"): Exit Sub
    Err.Clear
    On Error Resume Next
    Hoja4.Select
 ELIMINAR = False
    For i = Range("F" & Rows.Count).End(xlUp).Row To 1 Step -1
        If Cells(i, "F") = TextBox1 And Cells(i, "A") = TextBox4 Then
            If ELIMINAR = False Then
                If MsgBox("La FT ya existe Desea Eliminar y Volver ha Generar", _
                    vbQuestion + vbYesNo) = vbYes Then
                    ELIMINAR = True
                Else
                    TextBox1.Text = " "
                    Exit Sub
                End If
            End If
            Rows(i).Delete
        End If
    Next
    '
    Set h1 = Worksheets("INGRESOS")
    u = h1.Range("c" & Rows.Count).End(xlUp).Row + 1
    For i = 0 To ListBox6.ListCount - 1
        h1.Cells(u, "E") = ListBox4.List(i)     'Cantidad
        'h1.Cells(u, "C") = ListBox2.List(i)   'Unidad
        h1.Cells(u, "c") = ListBox6.List(i)     'Descripción
        h1.Cells(u, "F") = TextBox1             'Factura
        h1.Cells(u, "G") = ListBox7.List(i)     'Precio
        h1.Cells(u, "B") = ListBox3.List(i)     'codigo
        h1.Cells(u, "a") = TextBox4.Text        'proveedor
        h1.Cells(u, "I") = ComboBox1.Text       'almacen
        h1.Cells(u, "h") = DTPicker1            'fecha
        u = u + 1
    Next
    Linea
    LimpiarTodo
    Unload Me
    ActiveWorkbook. Save
End Sub

1 respuesta

Respuesta
1

¿Y si le pones depurar en qué línea de la macro se detiene?

hola Dante

he revisado el depurador pero no me indica donde esta el error

pero si ejecuto el botón Ingreso factura que es el acceso para ingresar al formulario me bota

slds

Robert

No veo en las imágenes los codename de tus hojas. No sé si tienes una hoja2.

Tampoco veo en cuál formulario estás trabajando, pero supongo que es el Userform2.

Al parecer tienes la hoja2 oculta, para poder seleccionarla, primero tienes que hacerla visible:

Cuando termines de ocupar la hoja, la puedes volver a ocultar.

S a l u d o s . D a n t e   A m o r

Si es lo que necesitas.

hola Dante una gran favor le puedo enviar mi archivo para que lo revise por favor la verdad no se donde esta mi error

slds

Robert

Estás ocultando las hojas, y después quieres seleccionarlas, por eso te envía error.

Trabaja con todas las hojas visibles.

Envíame tu archivo y me explicas paso a paso qué es lo que estás haciendo para que pueda replicar el problema.

Recuerda poner tu nombre de usuario en el asunto del correo.

hola dante

ninguna hoja esta oculta

Slds

Robert

Cambia tu evento initialize por el de activate.

Quita esto:

Private Sub userform_initialize()
'Hoja4.Activate
Application.ScreenUpdating = False
Hoja2.Select
Me.ListBox1.RowSource = Range(Range("b4"), Range("b4").End(xlDown).Next.Next.Next).Address
Hoja3.Select
Me.ListBox2.RowSource = Range(Range("a4"), Range("a4").End(xlDown).Next.Next.Next).Address
Me.CheckBox1.Value = False
ComboBox1.List = Array("JAVIER PRADO", "LURIN", "LA MOLINA")
'Hoja4.Activate
Application.ScreenUpdating = True
'Sheets("ingresos").Select
'Worksheets("ingresos").Select
End Sub

Y pon esto:

Private Sub UserForm_Activate()
'Act.Por.Dante Amor
    ListBox1.RowSource = Hoja2.Name & "!B4:B" & Hoja2.Range("B" & Rows.Count).End(xlUp).Row
    ListBox2.RowSource = Hoja3.Name & "!A4:A" & Hoja3.Range("A" & Rows.Count).End(xlUp).Row
    Me.CheckBox1.Value = False
    ComboBox1.List = Array("JAVIER PRADO", "LURIN", "LA MOLINA")
End Sub

Con el código anterior no es necesario que selecciones la hoja, procura utilizar la referencia a la hoja para que no tengas que ir a la hoja y leer un dato, por ejemplo:

Hoja1.select
Variable = range("A5")

Puede ser así, utilizando el codename de la hoja:

variable = Hoja1. Range("A5")

O puede ser así, utilizando el nombre de la hoja

variable = sheets("Hoja1"). Range("A5")

De esa forma no tienes que cambiarte de hoja, es más rápido.

S a l u d o s . D a n t e   A m o r

Recuerda valorar la respuesta.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas