Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
1772to1776
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

VBA find.

VBA find.
22.07.2020 11:04:36
Georg
Liebe Mitglieder, habe schon einige Zeit nix mehr mit VBA gemacht, und so bin ich etwas aus der Übung:
Im Blatt "GDK_Lizenzbestand" stehen in Spalte T einige Datumswerte, und wenn dem so ist bzw. gefunden werden, soll die ganze Zeile nach "Ausgabe" kopiert werden. Die Datei enthält noch etliche andere Blätter.
Der Code läuft ohne Fehlermeldung, aber es kommt nix raus, also Ausgabe bleibt leer :-( Vermute dass die Zeile mit dem
..find. das Problem sein könnte, weiß aber gerade nicht weiter.
Danke für einen Tipp!! G
Sub Datum_Suchen()
Dim rngFind As Range
Dim strDateStart As String
Dim wksZ As Worksheet
Set wksZ = ThisWorkbook.Worksheets("Ausgabe")
Dim rowZiel As Long
rowZiel = 1
Dim i As Long
Dim lastRowT As Long
lastRowT = ThisWorkbook.Worksheets("GDK_Lizenzbestand").Cells(Rows.Count, 20).End(xlUp).Row
With ThisWorkbook.Worksheets("GDK_Lizenzbestand")
For i = 6 To lastRowT
Set rngFind = .Cells(i, 20).Find(What:=Date, LookIn:=xlValues)
If Not rngFind Is Nothing Then
rngFind.EntireRow.Copy Destination:=wksZ(rowZiel, 1)
rowZiel = rowZiel + 1
End If
Next
End With
End Sub

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA find.
22.07.2020 11:16:03
Daniel
Hi
1. wenn man mit .Find arbeitet, dann braucht man keine Schleife über die einzelnen Zellen.
das wäre sogar fatal, weil .Find immer das ganze Tabellenblatt durchsucht, wenn man nur eine Einzelzelle als Suchbereich angibt. Eine einzelne Zelle mit .Find zu durchsuchen ist daher Unsinn.
2. mit Datumwerten hat .Find so sein Problem, denn es sucht nicht, wie die angabe xlValues vermuten lässt in den unformatierten Zellwerten, sondern in den formatierten Texten. Allerdings braucht das .FIND die Formatierungsangabe im amerikanischen Format, auch wenn man in einem Deutschen Excel sucht, das macht es kompliziert, mit .Find ein Datum zu suchen.
3. das wksZ(rowZiel, 1) ist so auch Unsinn. Woher hast du das?
ich würde daher hier nicht mit .FiND arbeiten sondern einen direkten Zellvergleich machen:

For i = 6 To lastRowT
if = Clng(.Cells(i, 20).value) = CLng(Date)
If Not rngFind Is Nothing Then
.rows(i).Copy Destination:=wksZ.Cells(rowZiel, 1)
rowZiel = rowZiel + 1
End If
Next

Anzeige
AW: VBA find. DANKE An ALLE ...
22.07.2020 11:42:43
Georg
..für die Vorschläge, die ja alle in die gleiche Richtung gingen! Wieder was dazu gelernt. Georg
AW: VBA find.
22.07.2020 11:21:11
Luschi
Hallo Georg,
Vba-Find und Datumszellen stehen auf dem Kriegsfuß, da hier die Zellformatierung des Datums sehr stark vom Such-Ergebnis abhängt:
deshalb benutze Application.Match
Gruß von Luschi
aus klein-Paris
AW: VBA find.
22.07.2020 11:32:20
volti
Hallo Georg,
ich würde es so machen. Ohne Find

Sub Datum_Suchen() Dim strDateStart As String Dim wksZ As Worksheet Set wksZ = ThisWorkbook.Worksheets("Ausgabe") Dim rowZiel As Long rowZiel = 1 Dim i As Long Dim lastRowT As Long With ThisWorkbook.Worksheets("GDK_Lizenzbestand") lastRowT = .Cells(Rows.Count, 20).End(xlUp).Row For i = 6 To lastRowT If CLng(.Cells(i, 20).value) = CLng(Date) Then .Rows(i).Copy Destination:=wksZ.Cells(rowZiel, 1) rowZiel = rowZiel + 1 End If Next End With End Sub
viele Grüße aus Freigericht
Karl-Heinz

Anzeige
AW: VBA find.
22.07.2020 11:36:30
volti
Upps, da fehlte ein Punkt. Falls das Blatt "GDK_Lizenzbestand" nicht das aktive ist.

Sub Datum_Suchen() Dim wksZ As Worksheet Set wksZ = ThisWorkbook.Worksheets("Ausgabe") Dim rowZiel As Long rowZiel = 1 Dim i As Long Dim lastRowT As Long With ThisWorkbook.Worksheets("GDK_Lizenzbestand") lastRowT = .Cells(.Rows.Count, 20).End(xlUp).Row For i = 6 To lastRowT If CLng(.Cells(i, 20).value) = CLng(Date) Then .Rows(i).Copy Destination:=wksZ.Cells(rowZiel, 1) rowZiel = rowZiel + 1 End If Next End With End Sub
viele Grüße aus Freigericht
Karl-Heinz

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige