191 Aufrufe
Gefragt in Tabellenkalkulation von ahorn38 Experte (3.2k Punkte)

Hallo, 

möchte in einem mit Formeln erzeugten "automatischen" Kalender die Position eines bestimmten Datums finden.

Set rngarea = Worksheets("Kalender").Range("K2:Q20").Find(What:=Datum, Lookat:=xlWhole)

Dieser Code funktioniert leider nicht, solange die Kalenderformeln im Hintergrund sind. Wenn ich den Kalender ohne die hinterlegten Formeln noch einmal speichere, dann würde das klappen. Damit gehen aber wichtige Funktionen verloren. Wie kann ich die Suche im "aktiven" Kalender machen?

Danke für euren Tipp.

VG A.

7 Antworten

0 Punkte
Beantwortet von

Die Find-Funktion in VBA (Visual Basic for Applications) ist eine sehr leistungsfähige Funktion, die es ermöglicht, Daten in einem bestimmten Bereich zu suchen. Hier sind die Parameter dieser Funktion:

  1. What: Dies ist der erforderliche Parameter. Hierbei handelt es sich um den Wert, den Sie suchen. Es kann sich um einen String, eine Zahl, ein Datum oder einen Zellbezug handeln.

  2. After: Dies ist ein optionaler Parameter. Dies ist die Zelle, nach der die Suche beginnt. Wenn dieser Parameter weggelassen wird, beginnt die Suche nach der ersten Zelle im Bereich.

  3. LookIn: Dies ist ein optionaler Parameter. Es bestimmt, ob die Suche in Formeln, Werten oder Kommentaren stattfinden soll. Die Optionen sind xlFormulas (sucht in den Formeln), xlValues (sucht in den Werten) oder xlComments (sucht in den Kommentaren).

  4. LookAt: Dies ist ein optionaler Parameter. Er bestimmt, ob die Suche die gesamte Zelle (xlWhole) oder nur einen Teil davon (xlPart) betrifft.

  5. SearchOrder: Dies ist ein optionaler Parameter. Er bestimmt die Reihenfolge, in der die Zellen durchsucht werden. Die Optionen sind xlByRows (sucht zuerst in Zeilen) und xlByColumns (sucht zuerst in Spalten).

  6. SearchDirection: Dies ist ein optionaler Parameter. Er bestimmt die Richtung der Suche. Die Optionen sind xlNext (sucht in der Reihenfolge der Zellen) und xlPrevious (sucht in umgekehrter Reihenfolge).

  7. MatchCase: Dies ist ein optionaler Parameter. Er bestimmt, ob die Suche die Groß- und Kleinschreibung berücksichtigt (True) oder nicht (False).

  8. MatchByte: Dies ist ein optionaler Parameter. Er wird nur in der DBCS (Double-Byte Character Set)-Version von Microsoft Excel verwendet.

  9. SearchFormat: Dies ist ein optionaler Parameter. Es ermöglicht die Suche nach einer bestimmten Zellenformatierung.

In Ihrem Fall, wenn Sie in den Formeln suchen möchten, könnten Sie den LookIn Parameter auf xlFormulas setzen. Es würde so aussehen:

Set rngarea = Worksheets("Kalender").Range("K2:Q20").Find(What:=Datum, LookIn:=xlFormulas, Lookat:=xlWhole)

Wenn Sie das tatsächliche Datum finden wollen, das von einer Formel berechnet wird, dann sollten Sie nach den Werten und nicht den Formeln suchen. Der LookIn Parameter sollte auf xlValues gesetzt werden:

Set rngarea = Worksheets("Kalender").Range("K2:Q20").Find(What:=Datum, LookIn:=xlValues, LookAt:=xlWhole)

Dieser Code sucht nach dem Wert von Datum in den Zellen K2 bis Q20 im "Kalender" Arbeitsblatt. Der Parameter LookIn:=xlValues stellt sicher, dass nach dem tatsächlichen Wert gesucht wird, der in der Zelle angezeigt wird (d.h. dem Ergebnis der Formel, wenn eine Formel in der Zelle steht).

Beachten Sie bitte, dass Datum vorher definiert sein muss, sonst wird ein Fehler auftreten.

0 Punkte
Beantwortet von ahorn38 Experte (3.2k Punkte)

Hallo,

vielen Dank für die ausführliche Antwort. Leider funktioniert es aber noch nicht, weder mit Parameter xlFormulas noch mit xlValues.

In der gesuchten Zelle steht die Formel:

=Tage+22+DATUM(Kalender1Jahr;Kalender1MonatOption;1)-WOCHENTAG(DATUM(Kalender1Jahr;Kalender1MonatOption;1);WochentagOption)

Angezeigt wird nur der entsprechende Tag im Monat.

Die Find-Funktion ergibt "Nothing". Wenn ich wie gesagt die Zellenformel entferne (Kopieren / nur Werte einfügen) dann erfolgt die Suche reibungslos, nur hilft mir das nicht weiter, weil ich die Zellendynamik brauche.

Gibt es noch andere Möglichkeiten?

Danke und Gruß A.

0 Punkte
Beantwortet von beverly_ Experte (3.3k Punkte)
Hi,

eine hochgeladene Beispielmappe wäre sehr hilfreich.

Bis später, Karin
0 Punkte
Beantwortet von ahorn38 Experte (3.2k Punkte)
Hallo noch einmal,

ich habe den , meinen Fehler gefunden!

Da das Datum lediglich durch den Tag angegeben wird, muss ich in der Suche auch entsprechdne anpassen:

set rng=activesheet.find(what:=format(Datum, "DD"), lookin:=xlValues)

Das funktioniert jetzt!

Danke an alle.
0 Punkte
Beantwortet von beverly_ Experte (3.3k Punkte)
[gelöscht]

Bis später, Karin
0 Punkte
Beantwortet von ahorn38 Experte (3.2k Punkte)
Trotzdem danke für deinen Hinweis, Karin!
0 Punkte
Beantwortet von katyswift468 Einsteiger_in (5 Punkte)

Ein DataPlugin basiert auf einem VBS-Script, das. Dateien eines bestimmten Dateityps analysiert und diese Informationen DIAdem zur Verfügung stellt.

mapquest directions

...