Eliminar datos de un listbox. Listindex definitivamente

Tengo un código que se ejecuta al doble click que en apariencia "elimina" los datos de las columnas que tiene mi listbox1. Listindex este es el código:

Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
Set a = ThisWorkbook.Sheets("productos")
filaedit = a.Range("B" & Rows.Count).End(xlUp).Row + 1
fila = Me.ListBox1.ListIndex

If ListBox1.ListCount = 0 Then
MsgBox "No Existen Productos Para Eliminar", , "AVISO"
Exit Sub
End If

On Error GoTo Errores
respuesta = MsgBox("Seleccionaste " & ListBox1.List(fila, 1) & " ¿Deseas ELIMINAR?", vbYesNo + vbExclamation, "ADVERTENCIA")
'si la respuesta es NO cancela aquí
If respuesta = vbYes Then
FormPedido.Label21.Caption = "0.00"
FormPedido.ListBox1.List(fila, 0) = "0.00"
FormPedido.ListBox1.List(fila, 1) = "-"
FormPedido.ListBox1.List(fila, 2) = "0.00"
FormPedido.ListBox1.List(fila, 3) = "0.00"
'para sumar listbox
For ii = 0 To FormPedido.ListBox1.ListCount - 1 'ajustar nbre del control ListBox
tott = Val(tott) + FormPedido.ListBox1.List(ii, 3)
Next ii
FormPedido.Label21.Caption = Format(Val(tott), "##0.00") 'aqui va estar el error
FormPedido.Label22.Caption = CONVERTIRNUM(FormPedido.Label21.Caption)
End If
If respuesta = vbNo Then Exit Sub
'Aquí va el código
'de nuestra macro
'Damos por terminada nuestra macro
Exit Sub
'Esta etiqueta es la que nos permitirá
'asignar otro código para manera el error.
Errores:
MsgBox "No hay datos para eliminar", vbInformation, "AVISO"

'Podemos u
End Sub

estos son los que se deben eliminar:

FormPedido.Label21.Caption = "0.00"
FormPedido.ListBox1.List(fila, 0) = "0.00"
FormPedido.ListBox1.List(fila, 1) = "-"
FormPedido.ListBox1.List(fila, 2) = "0.00"
FormPedido.ListBox1.List(fila, 3) = "0.00"

les puse "0.00" porque ya me canse y no busco como para de plano se elimine 

he puesto esto:

FormPedido.Label21.Caption = "" o (empty)
FormPedido.ListBox1.List(fila, 0) = "" o (empty)
FormPedido.ListBox1.List(fila, 1) = "-"
FormPedido.ListBox1.List(fila, 2) = "" o (empty)
FormPedido.ListBox1.List(fila, 3) ="" o (empty)

Y en la segunda opción si los "borra" pero al cargar otro dato en el listbox este me DEBERÍA poner los datos en el listindex que ya elimine, ¿sin embargo los datos nuevos los pone después de los eliminados osea como si hubiera datos en el que se "elimino" como soluciono el problema?

con este se agrega nuevo dato en el listbox

'Por.Dante Amor
If FormPedido.Label2.Caption = "" Then
Label9.Caption = "MODO:SOLO CONSULTA"
MsgBox "No hay cliente para agregar producto", vbExclamation, "ERROR"
Exit Sub
End If
On Error GoTo Selectblanco
fil2 = ver_PRODUCTOS.ListBox1.ListIndex
If ver_PRODUCTOS.ListBox1.List(fil2, 1) = "0.00" Then
MsgBox ver_PRODUCTOS.ListBox1.List(fil2, 0) & " No es producto disponible", vbExclamation, "ERROR"
Exit Sub
End If

Dim cantidad 'Nro
X:
'cantidad = InputBox("Ingrese Número", "Búsqueda")
'If IsNumeric(cantidad) Then
'If Val(cantidad) > 100 Then
'Hacer búsqueda
'Else
'MsgBox "Número menor a 100", vbExclamation + vbOKOnly, "Atención"
'GoTo x
'End If
'End If

fila = Me.ListBox1.ListIndex
cantidad = InputBox("Si estás seguro, captura la cantidad:", "Seleccionaste: " & ListBox1.List(fila, 0))
'If cantidad = 0 Or cantidad = "" Then
If IsNumeric(cantidad) Then
If Val(cantidad) > 0 Then
'agregar el producto al pedido
Sheets("productos").Activate
'FormPedido.ListBox1.AddItem Me.ListBox1.List(Me.ListBox1.ListIndex, 0) ' Producto
FormPedido.ListBox1.AddItem cantidad ' CANTIDAD
FormPedido.ListBox1.List(FormPedido.ListBox1.ListCount - 1, 1) = ver_PRODUCTOS.ListBox1.List(fila, 0) 'PRODUCTO
FormPedido.ListBox1.List(FormPedido.ListBox1.ListCount - 1, 2) = ver_PRODUCTOS.ListBox1.List(fila, 1) ' precio UNITARIOO
FormPedido.ListBox1.List(FormPedido.ListBox1.ListCount - 1, 3) = Format(ver_PRODUCTOS.ListBox1.List(fila, 1) * cantidad, ("""""#,##0.00")) ' importe
FormPedido.ListBox1.List(FormPedido.ListBox1.ListCount - 1, 4) = Format(ver_PRODUCTOS.ListBox1.List(fila, 2) * cantidad, ("""""#,##0.00"))
FormPedido.ListBox1.List(FormPedido.ListBox1.ListCount - 1, 5) = Format(ver_PRODUCTOS.ListBox1.List(fila, 3) * cantidad, ("""""#,##0.00"))

FormPedido.ListBox1.List(FormPedido.ListBox1.ListCount - 1, 6) = Format(ver_PRODUCTOS.ListBox1.List(fila, 4), ("""""#,##0.00"))
FormPedido.ListBox1.List(FormPedido.ListBox1.ListCount - 1, 7) = Format(ver_PRODUCTOS.ListBox1.List(fila, 4) * cantidad, ("""""#,##0.00"))
FormPedido.ListBox1.ColumnWidths = "50 pt;520 pt;180 pt;90 pt;90 pt;90 pt;90 pt;"
Unload Me

end sub

1 respuesta

Respuesta
1

Esa macro no es mía.

Yo no utilizo este tipo de sentencias:

On Error GoTo Selectblanco

Es una mala práctica. No deberías utilizar On Error. Siempre debes buscar la forma de verificar la información antes de procesar, de esa forma no tendrás que utilizar On Error.


En cuanto a "Eliminar" el registro del listbox, supongo que quieres eliminar completamente la fila, entonces:

Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
    ListBox1.RemoveItem ListBox1.ListIndex
End Sub

sal u dos

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas