Error que no conozco en VBA Excel

Cargo con el problema de desconocimiento en VBA u otro tipo de programación y a los 65 no creo aprender porque además mi ocupación no me deja alternativa


Busque la solución buscando en S. Google pero nada encontré de ayuda
Si no te lo hace en la 1ª ves, prueba salir del form y vuelve a abrirlo, repite los pasos para que veas lo que sucede


En la ventana Buscar/Edita después de seleccionado el ítem que quieras eliminar, ejecutas el botón Eliminar me presenta este error -2147024809 (80070057) en tiempo de ejecución


2º También Abriendo Nuevo Registro, luego el botón BUSCA/EDITA, he seleccionado el ítem 3 (XE.) presiono el botón Modificar para editarlo y en el form para editar me aparece es el ítem 2
Agradezco la ayuda que me puedan dar, como dije anteriormente, no estoy capacitado para dicha corrección

enlace

http://turbobit.net/p0f454s7e8ql.html]Proyecto_foro.xlsm

http://freakshare.com/files/idbpkmnv/Proyecto_foro.xlsm.html

1 respuesta

Respuesta
1

Probando las opciones que indicas en el libro, tenés 3 problemas:

1- Si seleccionas el item 2 (Invrs.T.A) Estás considerando la fila 2 pero como los datos en la hoja empiezan en la fila 2, debes sumar 1 para posicionarte en esa fila:

Entonces en el UFBC así te queda esta rutina:

Private Sub btnlistcliMO_Click() 'x Elsamatilde
If LC.ListIndex <> -1 Then
 Modificar = True
 FilaModificacion = LC.List(LC.ListIndex + 1) 'antes era; , 8)
 Unload Me
 UFMOC.Show
 btnbusccli_Click
End If
End Sub

2- Al eliminar un registro estás usando una instrucción algo difícil de seguir y que además dá error. Reemplaza por esta otra:

Private Sub btnlistcliBO_Click() 'x Elsamatilde
If LC.ListIndex <> -1 Then
 x = MsgBox("Se va a proceder a la eliminación del registro seleccionado de la lista.", _
 vbYesNo, "Eliminación de registro")
 If x = vbNo Then Exit Sub
 Range("A" & LC.List(LC.ListIndex + 1)).EntireRow.Delete
 ' Rows(Val(LC.List(LC.ListIndex, 8))).Delete
 btnbusccli_Click
 Application.ScreenUpdating = True
End If
End Sub

3- Como al listbox le asignaste la propiedad RowSource en el evento Initialize del UF, no podes 'limpiarlo' con Clear, debes asignarle la misma propiedad con vacío:

Private Sub btnbusccli_Click()
Application.ScreenUpdating = False
LC.RowSource = ""
Texto = "*" & txtbusccli & "*"

Seguramente tendrás que revisar otras situaciones similares por si has cometido los mismos errores.

Dejare en abierto el tema, luego que revise y pruebe va la calificación, ¿SI?

del 1º yue me dejas, esta linea

' FilaModificacion = LC.List(LC.ListIndex) 'antes era; , 8)

era ' FilaModificacion = LC.List(LC.ListIndex +8) 'antes era; , 8)

Por una recomendación de un experto, (no de acá) le quite

El 2º que me dejas, selecciono un item (QUE NO SEA EL ULTIMO DE LA TABLA) en listbox y elimino perfecto pero si o cuando selecciono EL ULTIMO me manda error en esta linea

Range("A" & LC.List(LC.ListIndex + 1)).EntireRow.Delete

error 381 en tiempo de ejecución.

Me perdona la srta. Elsamatilde por no poder dar la colaboración necesaria y posible en esto de programación.

Por lo demás, quedo sumamente agradecido por tan valiosa ayuda suya y espero me permita seguir probando y mensionandole uno que otro error que me presente.

Este proyecto lo baje de la WEB y vi que mucho me ayudará en mi labor, (no soy empresario)

Hasta el momento, es el único error que me dá todo el libro.

Pienso en el tiempo (corto) agregar (crear9 al menos un form mas para ingreso de productos, ya veré si necesito ayuda o no

Gracias srta. Elsa

Voy de nuevo xq hasta yo quedé mareada con tanto LC. List.

El pto 1, si te han dicho que coloques 8 seguramente en esa ocasión tendría sentido, pero <strong style="line-height: 1.5em;">ahora tu tabla tiene 1 fila de títulos y los datos recién <strong style="line-height: 1.5em;">a partir de la fila 2...

Pero además hay que considerar que los listbox inician su numeración en el elemento 0, lo que hace una diferencia de 2.

Entonces voy de nuevo con el pto 1:

Private Sub btnlistcliMO_Click()   'x Elsamatilde
If LC.ListIndex <> -1 Then
 Modificar = True
 FilaModificacion = LC.ListIndex + 2 'antes era; , 8)
 Unload Me
 UFMOC.Show
 btnbusccli_Click
End If
End Sub

El pto 2 lo mismo:

Private Sub btnlistcliBO_Click() 'x Elsamatilde
If LC.ListIndex <> -1 Then
 x = MsgBox("Se va a proceder a la eliminación del registro seleccionado de la lista.", _
 vbYesNo, "Eliminación de registro")
 If x = vbNo Then Exit Sub
 Range("A" & LC.ListIndex + 2).EntireRow.Delete
 'Rows(Val(LC.List(LC.ListIndex, 8))).Delete
 btnbusccli_Click
 Application.ScreenUpdating = True
End If
End Sub

Antes me dijeron para quitarle el 8.

El modificar está perfecto aunque le vuelva a colocar el 1, funciona, a menos que eso traega algún inconveniente teniendo el 1, mejor dejarlo como dices, con el 2

FilaModificacion = LC.ListIndex + 2 ' en ves de 1 inicial

Pero el Eliminar, (Private Sub btnlistcliBO_Click()) al ejecutar el botón me elimina además de la línea seleccionada (sea o no la ultima), también el texto del (ColumnHeads) encabezado que ya anteriormente me lo hacía sin haberme dado cuenta, mi pregunta es; ¿Que le modifico para que conserve el encabezado en el LitBox?

No es por el hecho de eliminar un registro, sino xq se ejecuta otra rutina que luego actualiza el listbox. Tu formulario tiene 2 rutinas diferentes para llenar el listbox: con la propiedad RowSource y fila x fila en otro evento.

Esto ya correspondería a una nueva consulta, atento a que te resolví 3 subrutinas ya . Finaliza por favor aquí y deja la nueva en el tablón y con mucho gusto seguiré con el nuevo tema.

Sdos

Elsa

Gracias Elsa, voy a nuevo tema entonces, atenta

Voy con el titulo de "Problema con Formulario con 2 rutinas diferentes para llenar listbox"

también tengo un otro tema en el tablón, "Unificar código en un Modulo para VBA Excel" a ver si puedes

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas