Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

VBA: Listbox nach Daturm filtern
#1
Hallo zusammen,

ich möchte gerne meine Listbox nach einem Datum filtern und habe dafür versucht, eine if-Abfrage einzufügen.
Jedoch erscheint die Meldung, dass die Typen unverträglich seien. Mit einer "Strg" Definition würde es funktioniere, aber da klappt das Filtern nach datum nicht.

Findet jemand auf die Schnelle eine Lösung?

LG Eric


Code:
' ************************************************************************************************
' VERARBEITUNGSROUTINEN
' ************************************************************************************************

'Diese Routine wird aufgerufen um die Liste (ListBox1) zu leeren, einzustellen und neu zu füllen
Private Sub LISTE_LADEN_UND_INITIALISIEREN()
  Dim STARTZEILENNUMMER As Long
  Dim lzeile As Long
  Dim lZeileMaximum As Long
  Dim i As Integer
  Dim lspalte As Integer
 




    'Alle TextBoxen leer machen
    For i = 1 To iCONST_ANZAHL_EINGABEFELDER
        Me.Controls("TextBox" & i) = ""
    Next i

    ListBox1.Clear 'Liste leeren
   
    '4 Spalten einrichten
    'Spalte 1: Zeilennummer des Datensatzes
    'Spalte 2: Name (Spalte A)
    'Spalte 3: Telefon (Spalte B)
    'Spalte 4: E-Mail (Spalte C)
    ListBox1.ColumnCount = 4
   

    'Spaltenbreiten der Liste anpassen (0=ausblenden, nichts=automatisch)
    '"<Breite Spalte 1>;<Breite Spalte 2>;<Breite Spalte 3>;<Breite Spalte 4>"
    ListBox1.ColumnWidths = "0;;;"
    'Feste Breiten: ListBox1.ColumnWidths = "0;100;100;100"
    'Um eine Schleife für alle Datensätze zu erhalten, benötigen wir die letzte verwendete Zeile
   
  STARTZEILENNUMMER = 5
           
    For lzeile = STARTZEILENNUMMER To 999
   
    Tabelle2.Select
    If TabStrip1.Value = 0 Then
      lspalte = 3
       
        'Nur wenn die Zeile benutzt / nicht leer ist, zeigen wir etwas an:
        If IST_ZEILE_LEER(lzeile) = False Then
       [b]     If CDate(Tabelle2.Cells(lzeile, lspalte - 1)) >= "10.03.2020" And CDate(Tabelle2.Cells(lzeile, lspalte - 1)) <= "11.03.2020" Then[/b]
            'Spalte 1 der Liste mit der Zeilennummer füllen
                ListBox1.AddItem lzeile
            'Spalten 2 bis 4 der Liste füllen

            ListBox1.List(ListBox1.ListCount - 1, 1) = CDate(Tabelle2.Cells(lzeile, lspalte - 1))
            ListBox1.List(ListBox1.ListCount - 1, 2) = CStr(Tabelle2.Cells(lzeile, lspalte))
            ListBox1.List(ListBox1.ListCount - 1, 3) = CStr(Tabelle2.Cells(lzeile, lspalte + 1))
End If
        End If
       
      ElseIf TabStrip1.Value = 1 Then
        lspalte = 3

        'Nur wenn die Zeile benutzt / nicht leer ist, zeigen wir etwas an:
        If IST_ZEILE_LEER(lzeile) = False Then
           
            'Spalte 1 der Liste mit der Zeilennummer füllen
            ListBox1.AddItem lzeile
            'Spalten 2 bis 4 der Liste füllen
            ListBox1.List(ListBox1.ListCount - 1, 1) =CDate(Tabelle2.Cells(lzeile, lspalte + 2))
            ListBox1.List(ListBox1.ListCount - 1, 2) = CStr(Tabelle2.Cells(lzeile, lspalte + 3))
            ListBox1.List(ListBox1.ListCount - 1, 3) = CStr(Tabelle2.Cells(lzeile, lspalte + 4))
       
        End If
    End If
    Next lzeile



End Sub
Antworten Top
#2
Hallo Eric,

vieleicht so:
If CDate(Tabelle2.Cells(lzeile, lspalte - 1)) >= DateValue("10.03.2020") And CDate(Tabelle2.Cells(lzeile, lspalte - 1)) <= DateValue("11.03.2020") Then
Gruß Uwe
Antworten Top
#3
Klappt leider nicht :/
Antworten Top
#4
Hallöchen,

Code:
Klappt leider nicht :/

schwierig, den Fehler darin zu finden Sad
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#5
Guten Morgen,

Tut mir leid Confused 
Ich habe mal eine Beispielmappe angehangen (für den ein oder anderen bestimmt bekannt). Ab Zeile 284 wäre der von mir eingefügte Code (jedoch mit ' heruasgenommen).

Ich bin mir sicher, dass ich irgendwo in meinem Programm (mir fehlen viele Kenntnisse) einen Definitionsfehler von der Listbox drin habe..

LG Eric


Angehängte Dateien
.xlsm   Mappe1.xlsm (Größe: 32,95 KB / Downloads: 13)
Antworten Top
#6
#push
Antworten Top
#7
Ich würde VBA verwenden:

z.B.

Code:
Private Sub UserForm_Initialize()
    with  ComboBox3
       .List = [transpose(row(1:31))]
       .Value = Format(Date, "DD")
    end with

    with ComboBox1
       .List = Application.GetCustomListContents(3)
       .Value = Format(Date, "MM")
    end with

    with ComboBox2
        .List = [transpose(row(2019:2030))]
       .Value = Format(Date, "YYYY")
    end with

    ListBox1.List = Tabelle2.ListObjects(1).DataBodyRange.Value
End Sub

Schau mal: https://www.snb-vba.eu/VBA_Userform_in_database_en.html
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
Antworten Top
#8
Grüße,

Bringt auch keinen Erfolg. Oder muss außer das "USerForm_Initialize" noch weiter was geändert werden?

LG Eric
Antworten Top
#9
Hallöchen,

nochmal was zum Fehler bei Uwe's Vorschlag. In Deinem Code hast Du
STARTZEILENNUMMER = 5

Das ist die Zeile mit den Überschriften. Infolge wird versucht, die Überschrift in ein Datum zu wandeln. Nimm mal
STARTZEILENNUMMER = 6

.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste