Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1076to1080
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

Such-Makro

Such-Makro
05.06.2009 21:51:54
Karsten
Hallo...
mit folgendem Makro wird bei mir von B1 abwärts nach einem bestimmten Zellinhalt gesucht:

Sub finde_Inhalt_in_B()
Static Found As Range
Application.EnableEvents = False
With Worksheets("Lehrbericht")
If Found Is Nothing Then
Set Found = .Columns(2).Find(Range("B1"), Range("B1"), xlValues, 2, 1, 1, False)
Else
Set Found = .Columns(2).Find(Range("B1"), Found, xlValues, 2, 1, 1, False)
End If
If Not Found Is Nothing Then
If Found.Row = 1 Then
.Range("B1") = "T E R M I N E"
On Error Resume Next
Set Found = Nothing
End If
End If
If Not Found Is Nothing Then Application.Goto Found
End With
Application.EnableEvents = True
End Sub


Da in Spalte A aber das Datum fortlaufend steht, möchte ich, dass der Suchvorgang ab der Zelle (Zeile) beginnt, wo in Spalte A das aktuelle Datum steht. Also wenn A50 5. Juni 2009 ist, soll erst ab B50 gesucht werden. Wenn mir da jemand weiterhelfen kann, allerbesten Dank?
Gruß
Karsten

21
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Such-Makro nach Datum
06.06.2009 01:54:07
Luc:-?
Moin-Moin, Karsten,
versuch's mal mit...

If Found Is Nothing Then
Set Found = .Columns(2).Find(Range("B1"), Evaluate("today()") _
font>, xlValues, 2, 1, 1, False)
Else...

Gruß + sWE, Luc :-?

AW: Such-Makro nach Datum
06.06.2009 11:03:51
Nepumuk
Hallo Luc,
das kann nicht funktionieren, After muss eine Zelle im Suchbereich sein, kein Wert.
Und was soll Evaluate("today()") in VBA? Da gibt's die Date-Funktion.
Gruß
Nepumuk
AW: Such-Makro nach Datum
06.06.2009 11:22:21
Karsten
Hallo Nepumuk,
kann man sich da befehlsmäßig nicht irgendwie an Spalte A orientieren, wo das Datum aufgelistet ist?
Über diesen Befehl läßt sich ja die Zelle mit dem aktiven Datum finden:
Dim varResult As Variant
varResult = Application.Match(CDbl(Date), Range("A:A"), 0)
If IsNumeric(varResult) Then Application.Goto Cells(varResult, ActiveCell.Column)
von da aus eine Zelle rechts rüber wäre die aktive Zelle, von wo die Suche aus gestartet werden müßte.
Aber ich habe keine Ahnung, wie ich es in diesen Befehl hineinbekomme.
Gruß
Karsten
Anzeige
AW: Such-Makro nach Datum
06.06.2009 12:05:29
Gerd
Hallo Karsten,
probier mal diesen Ersatz für die "Night"-Formel ;-)
Was Du mit der Find-Methode anstellen möchtest, weis ich leider nicht.
Der dritte Parameter bei Match (0 oder 1) hängt davon ab, welche Sorte Werte in Spalte A stehen u.
wie diese sortiert sind.

Public Sub a()
Dim Suchbereich As Range
Dim ersteZeile As Long, letzteZeile As Long
ersteZeile = Application.Match(CLng(Date), Columns(1), 1)
letzteZeile = Cells(Columns(1).Rows.Count, 1).End(xlUp).Row
Set Suchbereich = Range(Cells(ersteZeile, 2), Cells(letzteZeile, 2))
MsgBox Suchbereich.Address
End Sub


Gruß Gerd

Anzeige
AW: Such-Makro nach Datum
06.06.2009 14:30:07
Karsten
Hallo Gerd,
danke. Über die msgBox wird der Suchbereich ausgegeben, B390 - B1007 in meinem Falle. Das ist nicht das, was ich brauche. Ich bräuchte, dass die Suche nach dem Zellinhalt in B1 von der aktiven Zelle ausgeht und nicht über die komplett B-Spalte. Zur aktiven Zelle komme ich ja mit:
Dim varResult As Variant
varResult = Application.Match(CDbl(Date), Range("A:A"), 0)
If IsNumeric(varResult) Then Application.Goto Cells(varResult, ActiveCell.Column)
ActiveWindow.ScrollRow = ActiveWindow.ActiveCell.Row
With ActiveCell
Range(.Offset(-1, 0), .Offset(-1, 0)).Select
End With
Die "Findmethode" hat eben immer die komplette B-Spalte durchforstet. Wenn es mit einer anderen Methode auch geht, wäre mir natürlich auch recht.
Gruß
Karsten
Anzeige
Ja, ja, hatt'ich g'rad'nich'bedacht, außerdem...
06.06.2009 23:56:35
Luc:-?
...fiel mir auf die Schnelle nur Now ein... ;-)
Gruß Luc :-?
AW: Such-Makro nach Datum
06.06.2009 11:12:45
Karsten
Hallo Luc,
wie Nepumuk schon sagt, geht nicht.
Gruß
Karsten
AW: Such-Makro nach Datum
06.06.2009 15:34:18
Gerd
Sorry Karsten,
dass ich nicht weis, was Du vor hast, hatte ich bereits geschrieben.
Vermutlich liegt dies mit daran, dass ich GOTO außer zur Fehlerbehandlung kaum nutze.
Also ich würde eine vollständige Beschreibung benötigen, was Du wie wann machen willst.
Andere vielleicht nicht.
Gruß Gerd
AW: Such-Makro nach Datum
06.06.2009 17:14:01
Karsten
Hallo Gerd,
ich hab die Datei einfach mal hochgeladen.
https://www.herber.de/bbs/user/62253.xls
Allerdings geht es nicht, wie ich es erst beschrieben habe, weil der Suchtext ja in B1 eingegeben wird. Es sei denn, im Befehl lässt sich einfügen, wo vor B1 die aktive Zelle war.
Also: Wenn du in B1 "test" reinschreibst, dann enter drückts, sollte "test2" am 7.6. zuerst angezeigt werden.
Gruß
Karsten
Anzeige
AW: Such-Makro nach Datum
06.06.2009 17:38:26
Josef
Hallo Karsten,
Sub finde_Inhalt_in_B()
  Dim rng As Range, rngBereich As Range
  Dim varRes
  
  With ActiveSheet
    varRes = Application.Match(Clng(Date), .Range("A:A"), 0)
    If IsNumeric(varRes) Then
      Set rngBereich = .Range(Cells(varRes, 2), .Cells(Rows.Count, 2))
      Set rng = rngBereich.Find(What:=.Cells(1, 2), LookIn:=xlValues, LookAt:=xlPart, After:=rngBereich.Cells(rngBereich.Rows.Count, 1))
      If Not rng Is Nothing Then Application.Goto rng
    End If
  End With
  
  Set rng = Nothing
  Set rngBereich = Nothing
End Sub

Gruß Sepp

Anzeige
AW: Such-Makro nach Datum
06.06.2009 17:55:59
Karsten
Hallo Sepp,
Danke, aber wenn ich wieder mit Enter bestätige, sollte der nächste Eintrag gefunden werden.
Mit Escape würde ich bei dem gewünschtem Suchergebnis abrechen wollen.
Wenn du das noch machen könntest.... Danke.
Gruß
Karsten
AW: Such-Makro nach Datum
06.06.2009 18:30:12
Josef
Hallo Karsten,
ein Makkro mit Enter zu satrten ist in XL nonsense.
Das Makro wird bei iner eingabe in B2 gestartet und mit F3 wird weitergesucht.
' **********************************************************************
' Modul: DieseArbeitsmappe Typ: Element der Mappe(Sheet, Workbook, ...)
' **********************************************************************

Private Sub Workbook_Activate()
  Application.OnKey "{F3}", "finde_Inhalt_in_B"
End Sub

Private Sub Workbook_Deactivate()
  Application.OnKey "{F3}"
End Sub

' **********************************************************************
' Modul: Tabelle1 Typ: Element der Mappe(Sheet, Workbook, ...)
' **********************************************************************

Private Sub Worksheet_Change(ByVal Target As Range)
  If Target.Address = "$B$1" Then
    Set rngBereich = Nothing
    Set rng = Nothing
    finde_Inhalt_in_B
  End If
End Sub

' **********************************************************************
' Modul: Modul1 Typ: Allgemeines Modul
' **********************************************************************

Public rng As Range
Public rngBereich As Range

Sub finde_Inhalt_in_B()
  Dim varRes
  
  With ActiveSheet
    If rng Is Nothing Then
      varRes = Application.Match(Clng(Date), .Range("A:A"), 0)
      If IsNumeric(varRes) Then
        Set rngBereich = .Range(Cells(varRes, 2), .Cells(Rows.Count, 2))
        Set rng = rngBereich.Find(What:=.Cells(1, 2), LookIn:=xlValues, LookAt:=xlPart, After:=rngBereich.Cells(rngBereich.Rows.Count, 1))
        If Not rng Is Nothing Then Application.Goto rng
      End If
    Else
      Set rng = rngBereich.FindNext(rng)
      If Not rng Is Nothing Then Application.Goto rng
    End If
  End With
  
End Sub

Gruß Sepp

Anzeige
AW: Such-Makro nach Datum
06.06.2009 18:45:48
Karsten
Hallo Sepp,
bei F3 öffnet sich bei mir das Feld "Namen eingeben".
Gruß
Karsten
AW: Such-Makro nach Datum
06.06.2009 19:00:04
Josef
Hallo Karsten,
damit Woorkbook_Activate() ausgeführt wird, musst du die Datei speichern, schliessen und neu öffnen.
Gruß Sepp

AW: Such-Makro nach Datum
06.06.2009 19:46:04
Karsten
Hallo Sepp,
hab ich gemacht. Aber bei F3 passiert jetzt gar nichts mehr.
Gruß
Karsten
AW: Such-Makro nach Datum
06.06.2009 21:45:12
Josef
Hallo Karsten,
hast du auch alle Teile des Codes an die richtigen Stellen kopiert?
Gruß Sepp

Anzeige
AW: Such-Makro nach Datum
07.06.2009 08:35:49
Karsten
Hallo Sepp,
ich denke schon. Aber bei F3 geht nichts.

Die Datei https://www.herber.de/bbs/user/62260.xls wurde aus Datenschutzgründen gelöscht


Gruß
Karsten
AW: Such-Makro nach Datum
07.06.2009 08:40:49
Josef
Hallo Karsten,
"ich denke schon" - eben nicht, den Code für "DieseArbeitsmappe" hast du in das Modul der Tabelle geschrieben.
https://www.herber.de/bbs/user/62261.xls
Gruß Sepp

AW: Such-Makro nach Datum
07.06.2009 09:12:23
Karsten
Hallo Sepp,
danke!!! Und noch einen schönen Sonntag.
Gruß
Karsten
Anzeige
Suchbereich ändern, nicht "After"
06.06.2009 17:45:38
Erich
Hi Karsten,
wenn ich das jetzt richtig kapiere, würdest du besser den durchsuchten Bereich (also die Range,
auf die die Methode Find angewandt wird) anpassen, statt den "After"-Parameter zu manipulieren.
Damit wird natürlich nicht mehr die gesamte Spalte B durchsucht, aber das willst du ja wohl auch nicht.
Hier ist jetzt der durchsuc hte Bereich nicht mehr Columns(2), sondern abhängig von der Zeile,
in der das heutige Datum in Sp. A gefunden wird. Probier mal:

Option Explicit
Sub finde_Inhalt_in_B()
Dim varM As Variant, rngSuch As Range, rngF As Range
Application.EnableEvents = False
With Worksheets("Lehrbericht")
varM = Application.Match(CDbl(Date), .Range("A:A"), 0)
If IsNumeric(varM) Then
Set rngSuch = .Range(.Cells(varM, 2), .Cells(.Rows.Count, 2))
Set rngF = rngSuch.Find(.Cells(1, 2).Value, .Cells(.Rows.Count, 2), _
xlValues, 2, 1, 1, False)
If rngF Is Nothing Then
MsgBox .Cells(1, 2).Value & " am " & Date & " nicht gefunden"
Else
MsgBox .Cells(1, 2).Value & " gefunden in Zeile " & rngF.Row
If rngF.Row = 1 Then .Range("B1") = "T E R M I N E"
End If
Else
MsgBox "Datum nicht gefunden"
End If
End With
Application.EnableEvents = True
End Sub

Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort

Anzeige
ooooch: Sepp war schneller ;-) (owT)
06.06.2009 17:47:40
Erich
(ohne weiteren Text)

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige