Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Datum suchen mit VBA

Datum suchen mit VBA
02.09.2007 14:58:00
Anna
Hallo,
hier ein weiteres Problem:
ich habe eine UF erstellt, in der man den Namen des Mitarbeiters eintragen kann, der in der Tabelle dann gesucht und markiert wird. Das klappt auch wunderbar.
Nun wollte ich das selbe für ein Datum machen, welches in den Zellen A1:XX1 steht.
Diese Zellen ind als Datum formatiert.
Leider gibt er mir jedesmal die Meldung "Datum nicht gefunden"
Was habe ich falsch gemacht?
Hier ein mal der Quellcode
Dim zelles As Range
Dim bereichs As Range
Dim datum As String
datum = TextBox1.Text
Set bereichs = Sheets("Urlaubstage").Range("A1:E1")
bereichs.Select
Set zelles = bereichs.Find(datum, lookat:=xlWhole, LookIn:=xlValues)
If zelles Is Nothing Then
MsgBox "Datum nicht gefunden"
Else
MsgBox "Datum befindt sich in Zelle" & zelles.Address
End If

Vielen lieben Dank für Eure Hilfe
Anna

Anzeige

13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Datum suchen mit VBA
02.09.2007 15:02:00
Knut
Versuchs mal so:
Dim zelles As Range
Dim bereichs As Range
Dim datum As Date
datum = TextBox1.Text
Set bereichs = Sheets("Urlaubstage").Range("A1:E1")
Set zelles = bereichs.Find(what:=datum, lookat:=xlWhole, LookIn:=xlValues)
If zelles Is Nothing Then
MsgBox "Datum nicht gefunden"
Else
MsgBox "Datum befindt sich in Zelle" & zelles.Address
End If

Anzeige
AW: Datum suchen mit VBA
02.09.2007 21:13:55
Anna
Vielen Dank,
aber leider gibt er mir wieder die Meldung "Datum nicht gefunden".................... :-(
Wenn ich an dieser Stelle ein Break setze und mit F8 weiterlaufe ist zelles nothing, also leer. Woran kann das liegen?
LG
Anna

AW: Datum suchen mit VBA
02.09.2007 22:02:18
Thomas
Hallo Anna
Das liegt meiner Meinung nach am Datumsformat.
ich denke Du musst den Wert aus Deiner Textbox (Text) in ein Datum umwandeln, und zwar genau das Format in den Zellen die Du untersuchen willst.
Zum Beispiel: datum=CDate(FormatDateTime(datum, vbShortDate)) ... entspricht 02.09.2007 ... usw. siehe Hilfe
Gruß Thomas

Anzeige
AW: Datum suchen mit VBA
02.09.2007 22:03:00
Knut
Ich habs nicht ausprobiert. Ich schaetze dein Problem ist folgendes : du hast in der Textbox ein Datum stehen. In der Zelle steht das Datum aber intern als Zahl - zum Beispiel: 3395. nun musst du zunaechst Textbox.value nach Datumsformat bringen, also damit das System weiß, dass du Datum suchst.
Schau Dir mal folgende Befehle an:
CDate, Format, Dateserial
Versuchs mal mit textbox1.value
zelles ist nothing weil nichts gfunden wurde ;-)
Leider hab ich jetzt keine Zeit mehr.
Gruß,
Knut

Anzeige
AW: Datum suchen mit VBA
02.09.2007 22:08:27
Josef
Hallo Anna,
wenn in der ersten Zeile ein "richtiges" Datum steht, dann funktioniert der Code.
Private Sub CommandButton1_Click()
Dim zelles As Range
Dim bereichs As Range
Dim datum As Date

datum = TextBox1.Text

Set bereichs = Sheets("Urlaubstage").Range("A1:E1")

Set zelles = bereichs.Find(what:=datum, lookat:=xlWhole, LookIn:=xlValues)

If zelles Is Nothing Then
    MsgBox "Datum nicht gefunden"
Else
    MsgBox "Datum befindt sich in Zelle" & zelles.Address
End If

End Sub

Gruß Sepp

Anzeige
AW: Datum suchen mit VBA
02.09.2007 22:37:00
Anna
Juhu...............
Es funktioniert. Ihr seit unbezahlbar.......................................
Vielen Dank
LG Anna

AW: Datum suchen mit VBA
02.09.2007 23:01:36
Anna
Oh, das nächste Problem.
Ich habe die den selben Suchlauf auch für die Mitarbeiter gemacht:
Mitarbeiter befindet sich in B12 und Datum in C1 (zum Beispiel)
Jetzt hatte ich die "super" Idee, dass das Programm sich die Zellen merkt und in die Schnittstelle der beiden "Urlaub" einträgt.
Geht das überhaupt?
LG Anna

Anzeige
AW: Datum suchen mit VBA
02.09.2007 23:04:52
Josef
Hallo Anna,
ja, das geht.
die Schnittstelle ergibt sich aus der Zeile des gefundenen Mitarbeiter und der Spalte des gefundenem Datums.

cells(Zeile, Spalte)= "Urlaub"


Es währe aber einfacher wenn du deinen gesamten Code posten würdest.

Gruß Sepp

Anzeige
AW: Datum suchen mit VBA
02.09.2007 23:27:30
Anna
Hallo Sepp,
leider funktioniert es nicht.... Er sagt dann immer typen unverträglich
Hier der gesamte Code

Private Sub CommandButton1_Click()
Dim zelle As Range
Dim bereich As Range
Dim begriff As String
Dim ZEILE As Range
Dim SPALTE As Range
Dim zelles As Range
Dim bereichs As Range
Dim datum As Date
begriff = ComboBox1.Text
If begriff = "" Then MsgBox " Bitte Mitarbeiter auswählen"
Set bereich = Sheets("Urlaubstage").Range("B3:B16")
Set zelle = bereich.Find(begriff, lookat:=xlWhole, LookIn:=xlValues)
If zelle Is Nothing Then
MsgBox "Mitarbeiter nicht gefunden"
Else
MsgBox "Mitarbeiter befindt sich in Zelle" & zelle.Address
End If
zelle.Select
datum = TextBox1.Value
datum = CDate(FormatDateTime(datum, vbShortDate))
Set bereichs = Sheets("Urlaubstage").Range("A1:AB1")
Set zelles = bereichs.Find(what:=datum, lookat:=xlWhole, LookIn:=xlValues)
If zelles Is Nothing Then
MsgBox "Datum nicht gefunden"
Else
MsgBox "Datum befindt sich in Zelle" & zelles.Address
End If
Cells(zelle, zelles) = "u"


Vielen Dank
LG Anna

Anzeige
AW: Datum suchen mit VBA
03.09.2007 06:38:00
Anna
Hallo Sepp,
leider funktioniert es nicht.... Er sagt dann immer typen unverträglich
Hier der gesamte Code

Private Sub CommandButton1_Click()
Dim zelle As Range
Dim bereich As Range
Dim begriff As String
Dim ZEILE As Range
Dim SPALTE As Range
Dim zelles As Range
Dim bereichs As Range
Dim datum As Date
begriff = ComboBox1.Text
If begriff = "" Then MsgBox " Bitte Mitarbeiter auswählen"
Set bereich = Sheets("Urlaubstage").Range("B3:B16")
Set zelle = bereich.Find(begriff, lookat:=xlWhole, LookIn:=xlValues)
If zelle Is Nothing Then
MsgBox "Mitarbeiter nicht gefunden"
Else
MsgBox "Mitarbeiter befindt sich in Zelle" & zelle.Address
End If
zelle.Select
datum = TextBox1.Value
datum = CDate(FormatDateTime(datum, vbShortDate))
Set bereichs = Sheets("Urlaubstage").Range("A1:AB1")
Set zelles = bereichs.Find(what:=datum, lookat:=xlWhole, LookIn:=xlValues)
If zelles Is Nothing Then
MsgBox "Datum nicht gefunden"
Else
MsgBox "Datum befindt sich in Zelle" & zelles.Address
End If
Cells(zelle, zelles) = "u"


Vielen Dank
LG Anna

Anzeige
AW: Datum suchen mit VBA
03.09.2007 07:47:38
Wuxinese
Hallo Anna,
probier mal den folgenden Code:

Private Sub CommandButton1_Click()
Dim zelle As Range
Dim bereich As Range
Dim begriff As String
Dim ZEILE As Double
Dim SPALTE As Double
Dim zelles As Range
Dim bereichs As Range
Dim datum As Date
begriff = ComboBox1.Text
If begriff = "" Then MsgBox " Bitte Mitarbeiter auswählen"
Set bereich = Sheets("Urlaubstage").Range("B3:B16")
Set zelle = bereich.Find(begriff, lookat:=xlWhole, LookIn:=xlValues)
If zelle Is Nothing Then
MsgBox "Mitarbeiter nicht gefunden"
exit sub
Else
MsgBox "Mitarbeiter befindt sich in Zelle" & zelle.Address
ZEILE = zelle.row
End If
zelle.Select
datum = TextBox1.Value
datum = CDate(FormatDateTime(datum, vbShortDate))
Set bereichs = Sheets("Urlaubstage").Range("A1:AB1")
Set zelles = bereichs.Find(what:=datum, lookat:=xlWhole, LookIn:=xlValues)
If zelles Is Nothing Then
MsgBox "Datum nicht gefunden"
exit sub
Else
MsgBox "Datum befindt sich in Zelle" & zelles.Address
SPALTE = zelles.column
End If
Cells(ZEILE, SPALTE) = "u"


Ich hoffe, ich hab da nix durcheinandergebracht, sollte so aber funktionieren...
Gruss
Rainer

Anzeige
AW: Datum suchen mit VBA
03.09.2007 10:21:52
Anna
Juhu,
Super, es funktioniert............
Vielen Dank

AW: Datum suchen mit VBA
02.09.2007 23:02:14
Anna
Oh, das nächste Problem.
Ich habe die den selben Suchlauf auch für die Mitarbeiter gemacht:
Mitarbeiter befindet sich in B12 und Datum in C1 (zum Beispiel)
Jetzt hatte ich die "super" Idee, dass das Programm sich die Zellen merkt und in die Schnittstelle der beiden "Urlaub" einträgt.
Geht das überhaupt?
LG Anna
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Datum suchen mit VBA in Excel


Schritt-für-Schritt-Anleitung

Um mit Excel VBA ein Datum zu suchen und die entsprechende Zeile auszugeben, kannst Du folgenden Code verwenden. Dieser Code sucht nach einem Datum, das in einer Textbox eingegeben wurde, und gibt die Zelle aus, in der das Datum gefunden wurde.

Private Sub CommandButton1_Click()
    Dim zelle As Range
    Dim bereich As Range
    Dim datum As Date

    datum = CDate(FormatDateTime(TextBox1.Value, vbShortDate))  ' Umwandlung des Textbox-Werts
    Set bereich = Sheets("Urlaubstage").Range("A1:E1")  ' Definiere den Suchbereich

    Set zelle = bereich.Find(what:=datum, lookat:=xlWhole, LookIn:=xlValues)

    If zelle Is Nothing Then
        MsgBox "Datum nicht gefunden"
    Else
        MsgBox "Datum befindet sich in Zelle: " & zelle.Address
    End If
End Sub

Häufige Fehler und Lösungen

  1. Datum nicht gefunden: Wenn Du die Meldung "Datum nicht gefunden" erhältst, kann das an einem falschen Datumsformat liegen. Stelle sicher, dass das Datum in der Textbox im gleichen Format wie in der Excel-Tabelle eingegeben wird.

  2. Typen unverträglich: Diese Fehlermeldung kann auftreten, wenn Du versuchst, einen Wert in eine falsche Zelle zu schreiben. Achte darauf, dass Du die Zeilen- und Spaltennummern korrekt übergibst. Verwende Cells(ZEILE, SPALTE) statt Cells(zelle, zelles).


Alternative Methoden

  • Verwendung von VBA Find: Eine effektive Methode, um in einem bestimmten Bereich nach einem Datum zu suchen, ist die Verwendung der Find-Funktion. Dies ist nützlich, wenn Du ein spezifisches Datum in einer Datei nach Datum suchen möchtest.

  • Excel Makros: Du kannst auch Makros verwenden, um eine automatisierte Suche nach Datumswerten durchzuführen, was besonders hilfreich ist, wenn Du regelmäßig nach Daten suchst.


Praktische Beispiele

  1. Suche nach einem Datum gestern:

    datum = Date - 1  ' Datum von gestern
  2. Suche nach dem heutigen Datum:

    datum = Date  ' Heute
  3. Urlaubsanträge nach Datum suchen: Du kannst den obenstehenden Code anpassen, um nach Urlaubsanträgen in einer Tabelle zu suchen, indem Du den Bereich und die Suchkriterien entsprechend änderst.


Tipps für Profis

  • Nutze die CDate-Funktion, um sicherzustellen, dass der eingegebene Text in ein Datum umgewandelt wird. Dies hilft, Probleme mit Datumsformaten zu vermeiden.
  • Verwende Debug.Print, um Zwischenergebnisse auszugeben, wenn Du während der Entwicklung Probleme hast.
  • Stelle sicher, dass die Zellen, in denen Du suchst, korrekt formatiert sind. Excel ist sehr empfindlich gegenüber Formaten, insbesondere bei Datumsangaben.

FAQ: Häufige Fragen

1. Was ist der Unterschied zwischen xlWhole und xlPart in der Find-Funktion?
xlWhole sucht nach einem exakten Wert, während xlPart auch Teile eines Wertes findet.

2. Wie kann ich mehrere Datumswerte gleichzeitig suchen?
Du kannst eine Schleife verwenden, um durch ein Array von Datumswerten zu iterieren und die Find-Funktion für jedes Datum auszuführen.

3. Was tun, wenn das Datum in der Tabelle als Text formatiert ist?
In diesem Fall musst Du das Datum zuerst in ein Datumsformat umwandeln, bevor Du die Suche startest. Verwende die CDate-Funktion, um dies zu erreichen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige