Listbox en un formulario sin duplicados

Hola

Dispongo de un Listbox dentro de un formulario, en donde se muestran todas las filas, pero lo que necesito es que aparezcan sólo las filas que tengan datos en la columna B. Estaría muy agradecido si me pueden echar una mano

La secuencia que tengo es:


Private Sub CommandButton2_Click()
    UserForm3_Pago_Facturas.dtpServicio.Value = ""
Unload Me
End Sub
Private Sub CommandButton1_Click(): On Error Resume Next
If IsDate(dtpServicio) = True Then
   If Not ListBox1.ListIndex = -1 Then
      Range("X" & ListBox1.List(ListBox1.ListIndex, 4)) = dtpServicio.Value
'si el Nº de Orden está vacio, coloca el ID y el Cliente
    If Cells(ListBox1.ListIndex + 1, 5).Value <> "" Then
      Range("X" & ListBox1.List(ListBox1.ListIndex + 1, 4)) = dtpServicio.Value
   End If
   ListBox1.RemoveItem (ListBox1.ListIndex)
      Exit Sub
   End If
End If
Beep
End Sub
Private Sub dtpServicio_CallbackKeyDown(ByVal KeyCode As Integer, ByVal Shift As Integer, ByVal CallbackField As String, CallbackDate As Date)
dtpServicio.Value = Calendar1.Value
End Sub
Private Sub ListBox1_Click()
Label1.Caption = ""
dtpServicio.Value = ""
If Not ListBox1.ListIndex = -1 Then
   Label1.Caption = "   " & ListBox1.List(ListBox1.ListIndex, 1)
   TextBox1.Text = ListBox1.List(ListBox1.ListIndex, 0)
   TextBox2.Text = ListBox1.List(ListBox1.ListIndex, 2)
End If
End Sub
Private Sub TextBox1_Change()
TextBox1.Enabled = False
End Sub
Private Sub TextBox2_Change()
TextBox2.Enabled = False
End Sub
Private Sub UserForm_Activate()
With ListBox1
   For x = 2 To Range("B" & Rows.Count).End(xlUp).Row
      If IsDate(Range("X" & x)) = False Then
         .AddItem
         .List(.ListCount - 1, 0) = Range("B" & x)
         .List(.ListCount - 1, 1) = Range("D" & x)
         .List(.ListCount - 1, 2) = Range("I" & x)
         .List(.ListCount - 1, 3) = Range("J" & x)
         .List(.ListCount - 1, 4) = x
      End If
   Next
   .ListIndex = 0
End With
End Sub

1 Respuesta

Respuesta
1

Cambia este evento en tu macro

Private Sub UserForm_Activate()
'Act.Por.Dante Amor
    With ListBox1
        For x = 2 To Range("B" & Rows.Count).End(xlUp).Row
            If IsDate(Range("X" & x)) = False And _
               Range("B" & x) <> "" Then
                .AddItem
                .List(.ListCount - 1, 0) = Range("B" & x)
                .List(.ListCount - 1, 1) = Range("D" & x)
                .List(.ListCount - 1, 2) = Range("I" & x)
                .List(.ListCount - 1, 3) = Range("J" & x)
                .List(.ListCount - 1, 4) = x
            End If
        Next
        .ListIndex = 0
    End With
End Sub

No olvides valorar la respuesta.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas