Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
972to976
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
972to976
972to976
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Datumsuche per Makro

Datumsuche per Makro
06.05.2008 13:13:14
Sile1234
Hallo ich habe folgende Makro hier aus dem Forum gefunden für eine Suchfunktion die mir dann den Zellwert zurückgibt in der das Ergebnis gefunden wurde.

Private Sub CommandButton3_Click()
Dim Meldung As Byte
Dim Suchen As Date
Dim n%, x%, xZelle%, yZelle%
Dim Bereich$, Text$, Adresse$(), Akte$()
Bereich = "A1:EO4"
'Suchbegriff eingeben
Suchen = Worksheets("Export").Cells(2, 10).Value
'If Suchen = "" Then Exit Sub
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
' letzte Zelle im Bereich ermitteln
With ActiveSheet.Range(Bereich)
xZelle = .Columns(.Columns.Count).Column
yZelle = .Rows(.Rows.Count).Row
End With
' Eigentlicher Suchvorgang (in allen Tabellenblättern)
x = 1
With ActiveSheet.Range(Bereich)
Set c = .Find(Suchen, After:=Cells(yZelle, xZelle), LookIn:=xlValues)
If Not c Is Nothing Then
ErsteAdresse = c.Address
Do
ReDim Preserve Adresse(x)
Adresse(x) = c.Address(RowAbsolute:=False, ColumnAbsolute:=False)
Set c = .FindNext(c)
x = x + 1
Loop While Not c Is Nothing And c.Address  ErsteAdresse
End If
End With
' Anzeige der Suchergebnisse
Text = vbCrLf
For n = 1 To x - 1
Text = Text & " Zelle " & Adresse(n) & vbCrLf
Next n
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
' Die Anzahl der gefundenen Werte ist (x - 1), wenn keiner
' gefunden wurde dann ist x = 1
Select Case x
Case 1
Meldung = MsgBox("Es wurde kein übereinstimmender Wert gefunden", _
vbOKOnly, "G E F U N D E N E W E R T E")
Case 2
ActiveSheet.Select
ActiveSheet.Range(Adresse(1)).Select
Meldung = MsgBox("Es wurde eine Übereinstimmung in" & vbCrLf & _
Text & vbCrLf & "gefunden", vbOKOnly, "G E F U N D E N E W E R T E")
Exit Sub
Case Else
For n = 1 To x - 1
ActiveSheet.Select
ActiveSheet.Range(Adresse(n)).Select
Meldung = MsgBox("Drücken Sie JA, um den nächsten gefundenen " & _
"Wert zu sehen" & vbCrLf & "Insgesamt gibt es " & (x - 1) & _
" Übereinstimmungen!" & vbCrLf & Text, vbYesNo, "G E F U N D E N E W E R T E")
If Meldung = vbNo Then Exit Sub
Next n
End Select
End Sub


Das funktioniert alles bestens, solange das Feld, das gefunden werden soll, folgendermaßen formatiert ist: "TT.MM.JJJJ"
Ist es "TTT, TT.MM." formatiert klappt es nicht mehr. Leider ist die Datei in der ich suche geschützt und ich habe keine Möglichkeit die Formatierung anzupassen.
Jemand eine Idee woran das liegt?
Gruß
Sile1234

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Datumsuche per Makro
06.05.2008 13:35:47
Renee
Hi Sile,
Ändere

 LookIn:=xlValues
in
LookIn:=xlFormulas


GreetZ Renée

AW: Datumsuche per Makro
06.05.2008 13:42:55
Rudi
Hallo,
als Anregung:

Sub suchen()
Dim vntFound(), rngC As Range, i As Integer, strFound
i = -1
For Each rngC In Range("A1:EO4")
On Error Resume Next
If CDate(rngC) = CDate(Worksheets("Export").Cells(2, 10).Value) Then
If Err = 0 Then
i = i + 1
ReDim Preserve vntFound(i)
vntFound(i) = rngC.Address(0, 0)
End If
Err.Clear
End If
Next rngC
On Error GoTo 0
If i = -1 Then
MsgBox "Nix gefunden"
Else
MsgBox "gefunden in " & vbLf & Join(vntFound, vbLf)
End If
End Sub


Anzeige
AW: Datumsuche per Makro
06.05.2008 14:18:17
Sile1234
1000 Dank, das ist ja noch wesentlich einfacher :) Danke

AW: Datumsuche per Makro
06.05.2008 14:43:02
Sile1234
Wie kann ich denn das Makro dazu bringen nicht in der aktuellen Tablle danach zu suchen, sondern z.b. im Blatt Daten in der Tabelle Test?

AW: Datumsuche per Makro
06.05.2008 15:06:00
Rudi
Hallo,
indem du es so angibst.

For each rngC in Workbooks("Test.xls").sheets("Daten").Range("A1:EO4")


Gruß
Rudi

AW: Datumsuche per Makro
06.05.2008 15:29:15
Sile1234
Hmm, warum bin ich nur so verdammt blind? Danke nochmal

AW: Datumsuche per Makro
06.05.2008 15:54:00
Sile1234
Er gibt mir ja nun als Meldung die Zelle zurück in der er fündig wird, ich brauche jedoch nur die Spalte. Da die Ergebnisse immer in einer festen Zeile (9) sind, hab ich das so gelöst:
Spalte = Replace(Join(vntFound), "9", "")
Dann bekomme ich einen String in dem ich nur die Spalte habe. Wie kann ich diesen Wert nun so verändern das sich die Spalte um einen nach Rechts verschiebt? Also der Treffer ist z.b. in AF9, mit meinem replace bekomme ich AF zurück. Ich brauch aber als Ergebnis AG.
Ist sowas möglich?

Anzeige
AW: Datumsuche per Makro
06.05.2008 16:07:00
Rudi
Hallo,
vntFound(i) = Replace(rngC.Offset(0, 1).Address(0, 0), rngC.Row, "")
Gruß
Rudi

AW: Datumsuche per Makro
06.05.2008 16:16:00
Sile1234
Ich bin immer wieder begeistert wie schnell Du bist :) Hast du nichts anderes zu tun als fragewütigen Menschen zu helfen?
Das funktioniert von der Idee her super, aber leider wird das ganze schwieriger als erwartet. Die Tabelle die ich bekomme hat jede Menge verbundene Zellen. Wenn ich deine Erhöhung einbaue, kommt nicht AG raus, sondern AJ.
Die Zelle in der die Suchroutine fündig geworden ist, ist eine verbunden Zelle von AF - AI. Also gibt er tatsächlich korrektes Ergebnis AJ raus. Was ich mit der ganzen Sache erreichen will ist aber folgendes.
Ich muss aus einer Tabelle Werte in eine andere reinkopieren. Das sind Werte die einem bestimmten Datum zugordnet werden müssen. Die müssen alle spaltenweise aus der einen in die andere kopiert werden. Dazu muss ich natürlich die Spalte suchen, das klappt ja wunderbar. Da die Zielfelder aber nicht exakt in der Spalte liegen wo der Suchtreffer ist, muss die um 1 erhöht werden.

Anzeige
Verdummbene Zellen, herzliche Beileid (owT)
06.05.2008 16:37:48
Renee

AW: Datumsuche per Makro
07.05.2008 09:38:23
Rudi
Hallo,
vntFound(i) = Replace(Cells(1, rngC.Column + 1).Address(0, 0), 1, "")
Gruß
Rudi

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige