Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1712to1716
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Match Funktion spinnt (?)

Match Funktion spinnt (?)
28.09.2019 17:35:06
Simon
Hallo ihr,
ich bin mal wieder mit meinem Latein am Ende, denn Excel scheint schon wieder zu tun was es will...
Folgendes Problem:
Ich habe eine Tagesübersicht, die mir aus einer Urlaubsdatei (Mit den Sheets Januar-Dezember) den Urlaub auslesen soll. Hierzu kann man in eine Textbox das Datum einfügen, VBA sucht dann den Match mit dem Datum, geht in der Spalte runter und sucht dann Eintragungen.
Soweit, sogut. Jetzt das komische/verrückte. Der Code hängt sich manchmal auf und ich war am verzweifeln warum. Nach viel Trial and Error scheint es so, dass es daran hängt wie man die Urlaubsdatei speichert. Wenn das letzte offene Blatt Oktober ist, geht z.b. keine Abfrage für September und ich hab ehrlich keine Ahnung warum, denn laut Code müsste er alle durchforsten:
D
im i As Long
Dim a As Variant
For i = 1 To 12
a = Application.Match(CLng(DateValue(TextBox1)), Workbooks(wkbName).Worksheets(i).Rows(2),  _
0)
If IsNumeric(a) Then
Ich habe auch schon versucht über das Datum nur den Monat auszulesen und dann "i" diesem Wert zuzuweisen, aber das Ergebnis ist das gleiche. Immer wenn man die Urlaubsdatei speichert und dabei das letzte Sheet als Ansicht da ist, gehen einige Monate nicht.
Vielleicht habt ihr eine Idee!
LG und Dank euch!

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Match Funktion spinnt (?)
28.09.2019 19:09:48
MatthiasG
Hallo Simon,
ohne dass ich jetzt ins Detail eingestigen bin:
Hast du schon WorksheetFunction.Match() ausprobiert?
Gruß Matthias
AW: Match Funktion spinnt (?)
28.09.2019 19:59:27
onur
poste mal die Dateien.
AW: Match Funktion spinnt (?)
29.09.2019 00:37:12
Simon
Hallo ihr zwei,
@ Matthias: Nein mit der habe ich leider keine Erfahrung. Aber diese gibt mir dich nur wieder wo im Array sich der Treffer befindet oder? In meinem Fall brauche ich ja aber eine konkrete Zelle als Rückmeldung. Aber wie gesagt, falls ich das falsch verstanden habe, bitte verzeih mir!
@onur: Ich kann zumindest die Urlaubsdatei posten, wenn dir das hilft? Das Problem ist, dass in der anderen Datei einige Internas enthalten sind. Die kann ich zwar versuchen zu entfernen, aber das kann etwas dauern!
Liebe Grüße und vielen Dank euch beiden schon mal!
Einen Grund warum das je nach Speicherzustand der Urlaubsdatei funktioniert oder nicht könnt ihr euch aber auch nicht erklären oder?
Anzeige
AW: Match Funktion spinnt (?)
29.09.2019 00:51:50
Daniel
ne, da müsste man schon die Datei sehen
Sind alle Blätter für die Monate vorhanden und in Reihenfolge?
Gibt es in der Datei noch mehr Blätter als die Monatsblätter?
Stehen die Datumswerte korrekt wie benötigt in den Zellen?
Da du für jeden Monat ein eigenes Blatt hast, würde ich beispielsweise in die Spaltenüberschriften kein Datum mehr schreiben, sondern nur noch 1-31 für die Tage.
ich würde mich fragen, warum hier überhaupt mit Application.Match über alle Tabellenblätter gehen?
das Blatt sollte sich aus dem Datum direkt berechnen lassen.
die Spaltennummer sollte sich aus dem Tag direkt berechnen lassen, wenn in den Monatsblättern jeder Tag einmal aufgeführt wird, für jeden Tag die gleiche Anzahl an Spalten verwendet wird und die Tage aufsteigend sortiert sind (das ist aber in 99% aller Kalender der Fall)
Gruß Daniel
Anzeige
AW: Match Funktion spinnt (?)
29.09.2019 11:50:33
Simon
Hallo Daniel,
es kann natürlich so einfach sein....Danke für den Gedankenanstoß. Ich habe mich so auf einen Code verrannt, dass ich gar nicht daran gedacht habe, dass ich die Zelle ja direkt zuweisen kann.
Das Problem ist zumindest schon mal gelöst.
Dafür ist ein neues aufgetreten:
Kurze Erklärung zum nachfolgenden Code:
Er durchsucht jetzt anhand der Zieldatumszelle ("m" bei Sheets ist der richtige Monat, "t" ist der Tag +1, weil das Datum bei A2 beginnt und bis AF2 aufhört) die Spalte runter nach dem Urlaubskürzel "u". Bei Fund nimmt er den Wert der Zelle in Spalte 1 aus der Ergebnisreihe, denn da steht der Name und trägt ihn in die Tagesübersicht ein. Dann sollte er eigentlich weitersuchen, was er bisher auch gemacht hat :/

For d = 1 To 41
Set Ergebnis = Workbooks(wkbName).Sheets(m).Columns(t + 1).Find("u", Lookat:=xlWhole)
If Not Ergebnis Is Nothing Then
ErstesErgebnis = Ergebnis.Address
Do
Set Urlaub = Workbooks(wkbName).Sheets(m).Cells(Ergebnis.Row, 1)
With Tabelle1
Z = 3
nochmalUrlaub:
If .Cells(58, Z) = "" Then
.Cells(58, Z) = Urlaub.Value
Else
Z = Z + 1
GoTo nochmalUrlaub
End If
End With
Set Ergebnis = Cells(2, t + 1).EntireColumn.FindNext(Ergebnis)
Loop While ErstesErgebnis  Ergebnis.Address
Exit For
End If
Next
d
Den ersten Namen findet er auch, trägt ihn ein, aber dann bricht er ab.
Bisher ging die Loopschleife einwandfrei, jetzt spuckt er mir im letzen Teil

Loop While ErstesErgebnis  Ergebnis.Address
plötzlich Laufzeitfehler 91 aus.
Ich habe Ergebnis übringens als Range definiert.
Vielleicht sieht einer von euch auf einen Blick wo es bei mir hängt :/
Danke euch allen schon mal!
Anzeige
AW: Match Funktion spinnt (?)
29.09.2019 12:39:45
Daniel
Zellbezüge (Range, Cells, Columns, Rows) ohne worksheetangabe davor beziehen sich immer auf das gerade aktive Tabellenblatt in der gerade aktiven Datei.
Überprüfe mal deinen Code diesbezühlich.
Der Fehler kommt, weil bei dir in der FindNext-Funktion der Durchsuchte Bereich und Startzelle der Suche (Parameter After) auf unterschiedlichen Blättern in unterschiedlichen Dateien liegen.
Gruß Daniel
AW: Match Funktion spinnt (?)
29.09.2019 13:29:18
Simon
Klappt, danke ihr seid die besten!

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige