Suchfunktion mit VBA

  • Excel

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von MissLeela.

    Suchfunktion mit VBA

    Moin Leute,

    möchte in Excel per VBA folgendes machen:

    Auf dem Tabellenblatt 1 sind Zeilenweise die Termine von den
    Eltern und den Kindern eingetragen und diesen zugeordnet.

    Wenn man jetzt eine Inputbox aufruft und dort beispielsweise
    Papa eingibt, soll in der Tabelle nach den Terminen gesucht werden, die in der
    Spalte mit der Überschrift „Papa“ stehen und dann soll die gesamte Zeile
    kopiert werden, also nicht nur das jeweilige Datum des Termins sondern
    natürlich auch um welchen Termin es sich handelt. Diese Zeilen sollen dann in
    das Tabellenblatt 2 kopiert werden.

    Da so was immer schlecht zu beschreiben ist, habe ich mal
    eine Beispieltabelle erstellt mit ein paar Erläuterungen.

    Da ich grad erst dabei bin mich in die VBA-Programmierung
    einzuarbeiten, bin ich bisher nicht sehr weit gekommen. Ich denk mal da muss
    man so ne Schleife programmieren die erstmal die richtige Spalte findet und
    diese dann Zeile für Zeile durchsucht.

    Vielleicht kann mir hier ja jemand nen Schubs in die
    richtige Richtung geben. Das wär supi.

    Schon mal Vielen Dank im Voraus.
    Dateien
    Dazu brauchst Du kein VBA. Eine Pivottabelle ist für solche Zwecke gut geeignet.
    Wenn es VBA sein muss, dann wäre ein Lösungsversuch nicht schlecht. Diesen können wir
    dann gemeinsam optimieren, bzw lauffähig bekommen. Statt der Eingabe eines Namens zur
    Suche kann man auch ein Auswahlfeld nehmen. Ein Lösungsvorschlag:
    Dateien
    Gruß
    Peterfido

    Keine Unterstützung per PN!
    Hey peterfido, vielen dank für deine Antwort.

    Dein Beispiel find ich sehr gut. Ich wollte den Code dann auf mein Beispiel anwenden, aber das funktioniert nicht. Wenn ich das Makro starten will, dann wird es in der Liste gar nicht erst aufgeführt, die ist komplett leer.
    Private Subs erscheinen nicht in der Liste. Dazu müsste es als Public in einem Modul platziert werden. Allerdings startet "meins" automatisch, wenn der Name gewechselt wurde. Muss also nicht manuell ausgeführt werden.
    Gruß
    Peterfido

    Keine Unterstützung per PN!
    So, erstmal wieder dank an dich peterfido für deine Antwort. Hab das jetzt auch alles ganz gut hinbekommen, aber schon wieder ein neue Idee und dazu natürlich auch ein neues Problem.

    Wollte es nun so machen, dass ich in der Auswahlliste nicht die Personen auswähle, sondern den Termin und mir dann ausgegeben wird wann der Termin ist und welche Personen den haben.

    Auf Basis deiner Tabelle habe ich folgendes gemacht, aber es klappt nicht perfekt. Manchmal wird nur ein Datum angezeigt, obwohl es zwei sind und es wird nicht ausgegeben welche Personen den Termin haben. Vielleicht kannst du mir ja wieder mal behilflich sein.

    Schonmal danke!

    Hier mein Versuch und auch nochmal die Datei.

    Private stopp As Boolean

    Private Sub suche()
    'suchfeld = A1
    Dim i As Long
    Const Anfang = 3
    Dim Ende As Long
    Dim Zeile As Long
    Dim Spalte As Integer
    stopp = True
    i = 4
    Range("A4:B65535").ClearContents
    With Sheets("Termine")
    For Zeile = 3 To 7
    If UCase(.Cells(Zeile, 1)) = UCase(Cells(1, 1)) Then
    Ende = .UsedRange.SpecialCells(xlCellTypeLastCell).Row
    For Spalte = Anfang To Ende
    If CDate(.Cells(Zeile, Spalte)) > CDate(Now) Then
    Cells(i, 1) = .Cells(Zeile, Spalte)
    Cells(i, 2) = .Cells(Zeile, 1)
    Cells(i, 1).NumberFormat = "m/d/yyyy"
    i = i + 1
    End If
    Next Spalte
    Exit For
    End If
    Next Zeile
    End With
    stopp = False

    End Sub

    Private Sub Worksheet_Change(ByVal Target As Range)
    If Not stopp Then suche

    End Sub

    Private Sub Worksheet_SelectionChange(ByVal Target As Range)

    End Sub
    Dateien