Clever-Excel-Forum

Normale Version: VBA - Wert finden und ganze Zeile ausgeben
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo,

Habe mir jetzt ein Makro geschrieben, das mir die gesamte aus einem Formular ein Datum ausliest, und mir aus einer Tabelle die Zeile zum entspr. Datum anzeigt.
Sollte das Datum nicht vorhanden sein, soll es quasi in der nächsten Zeile weiterlesen. Zur Zeit erscheint diese MsgBox "Wert nicht gefunden"

Geht das mit meiinem Ansatz:

Code:
Sub DatenfindenundkopierenTEST()

Dim rng As Range
Dim suchDatum As Date

suchDatum = Sheets("Tabelle1").Range("H4").Value 'gesuchter Wert
'Range("B13") = suchDatum


Set rng = Worksheets("CSV Transfer").Range("A2:A366").Find(suchDatum)
If rng Is Nothing Then
  MsgBox "Wert nicht gefunden!"
 
Else
   rng.EntireRow.Copy
   Worksheets("Tabelle1").Range("A13").PasteSpecial Paste:=xlPasteAll
End If

End Sub
Hallo,

(27.04.2016, 14:54)lapunta schrieb: [ -> ]Sollte das Datum nicht vorhanden sein, soll es quasi in der nächsten Zeile weiterlesen.

geht das etwas genauer/verständlicher?

Gruß Uwe
In der Tabelle CSV Transfer stehen in der Spalte A die Datumsangaben, in den folgenden Spalten weitere Daten.

 Momentan sucht das Makro nach einem Datum und gibt dann die ganze Zeile aus. Jetzt kann es aber sein, daß es das gesuchte Datum einfach nicht gibt. Sieht dann so aus:

15.03.2016       41,71      41,99      41,04
14.03.2016       40,885    41,83      40,73
11.03.2016       40           40,965    39,62
10.03.2016       40,855    41,99      39,2

Also hier fehlen der 12. bzw. der 13.März, somit kann das Makro diese Zeile nicht finden.

Es wäre schön, wenn es stattdessen die nächste vorhandene Zeile anzeigen würde. Also in diesem Beispiel die vom 14.März.
Hallo,

wenn die Daten absteigend sortiert sind, ginge es mit der Funktion VERGLEICH (entspricht Match) mit dem Parameter -1:
Sub DatenfindenundkopierenTEST()
 Dim rng As Range
 Dim suchDatum As Double
 
 suchDatum = Sheets("Tabelle1").Range("H4").Value 'gesuchter Wert
 Set rng = Worksheets("CSV Transfer").Range("A2:A366")
 rng.Rows(Application.Match(suchDatum, rng, -1)).EntireRow.Copy Worksheets("Tabelle1").Range("A13")
End Sub

Gruß Uwe
Hallo Lapunta

mir ist noch nicht ganz klar was du mit dem naechsten Wert meinst?

So wie die Aufgabe jetzt aussieht wird das Datum aus Zelle H4 gesucht.
Wenn es gefunden wurde, wird das Datum dann manuell geaendert?
Oder soll Das Makro ab H5, H6 das naechste Datum weiter suchen?

Das ist mir noch nicht ganz klar.

mfg  Gast 123
sorry doppel post...