MS-Office-Forum

Zurück   MS-Office-Forum > Microsoft Office > Microsoft Excel
Registrieren Forum Hilfe Alle Foren als gelesen markieren

Banner und Co.

Antworten
Ads
Themen-Optionen Ansicht
Alt 22.09.2017, 10:14   #1
casati
Neuer Benutzer
Neuer Benutzer
Standard Excel 2013 - Datumssuche mit Find

Guten Tag Entwickler,

ich habe (mal wieder) ein Verständnisproblem. Die nachfolgende Tabelle enthält für das ausgewählte Jahr die Datumswerte vom 01.01. – 31.12.:

01.01.2018 Schichtplan
Datum Tag Schicht Gruppe
01.01.2018 1 Früh A
01.01.2018 1 Spät D
01.01.2018 1 Nacht A
02.01.2018 2 Früh D
02.01.2018 2 Spät B
02.01.2018 2 Nacht D
03.01.2018 3 Früh B
03.01.2018 3 Spät C
03.01.2018 3 Nacht B
04.01.2018 4 Früh C
04.01.2018 4 Spät E
04.01.2018 4 Nacht C
05.01.2018 5 Früh E


Diese werden über eine Formel =WENN(ODER(V10="Spät";V10="Nacht");T9;T9+1)
erstellt, da jeder Tag in drei Schichten aufgeteilt ist.

Ein übergebenes Datum (Variable strDatum) soll anschließend mit „Find“ in der Tabelle ausgelesen und die Informationen in den Spalten „Schicht“ und „Dienstgruppe“ für die weitere Verarbeitung übergeben werden. Die Variable strDatum wird erstellt durch:

strdatum = intTag & "." & intMonat & "." & lngJahr

Die Variablen intTag und intMonat sind Zähler die aus zwei Schleifen (Monate 1 – 12 und die jeweiligen Tage der Monate) gebildet werden. Die Jahreszahl wird vom Anwender ausgewählt.

Wird nun die Suche aufgerufen:

endZSuche = .Cells(Rows.Count, 22).End(xlUp).Row
Set found = .Range("T8:T" & endZSuche).Find(CDate(strdatum), .Range("T" & endZSuche), , xlWhole, , xlFormulas, xlByRows, xlNext)
If found Is Nothing Then
'Fehler suchen, kann eigentlich nicht sein!
Else
'Daten auslesen/schreiben
FirstAddress = found.Address
intzsuche = found.Row


läuft die Anwendung mal problemlos durch und mal nicht. Soweit ich es verstehe, hängt dies mit den Einstellungen der Suchfunktion in Excel zusammen, die ich ja über den Aufruf „Set found“ anspreche. Ich finde allerdings nicht raus, warum es mal funktioniert und mal nicht. Es scheint am Datumsformat zu liegen. Dies konnte ich aber bisher nicht näher erschließen und soweit ändern, dass die Anwendung zuverlässig läuft. Die Spalte mit den Datumswerten ist als Datum (*tt.mm.jjjj) definiert.

Für einen Lösungsansatz wäre ich sehr dankbar.

Casati
casati ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 24.09.2017, 08:10   #2
Hajo_Zi
MOF Guru
MOF Guru
Standard

find ist schlecht für Datum.

aktuelles Datum suchen
Option Explicit

Sub Test()
' Heutiges Datum in Spalte A (1) suchen von Basti Spotlight
' es wird die Zeile ausgegeben
MsgBox Application.Match(CDbl(Date), Columns(1), 0)
End Sub


GrußformelHomepage

__________________

Signatur in jedem Beitrag
m Forum kann der Beitrag als erledigt markiert werden. Also mache es unten links mit Klick auf den Schalter "als erledigt setzen", falls Problem gelöst.
Der Zustand des Beitrages wird dann in der Übersicht angezeigt und man braucht sich diese Beiträge nicht mehr ansehen.
Bitte Version angeben. Bei keiner Angabe gehe ich von meinen Angaben aus.
Betriebssystem: Windows 10 - 64 Bit, Office 2016 - 32 Bit.
Hajo_Zi ist gerade online  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 25.09.2017, 14:13   #3
casati
Threadstarter Threadstarter
Neuer Benutzer
Neuer Benutzer
Strahlen

Danke Hajo!
Ich habe noch eine kleine Testreihe gebraucht, bis ich das Problem verstanden habe (Datum als Text statt Zahl):

MsgBox CDbl(strdatum)
Var = Application.Match(CDbl(strdatum), Sheets(w3).Columns(20), 0)
'CDbl(strdatum) = 112018
'Var = Fehler 2042
MsgBox CLng(strdatum)
Var = Application.Match(CLng(strdatum), Sheets(w3).Columns(20), 0)
'Clng(strdatum) = 112018
'Var = Fehler 2042
MsgBox strdatum
Var = Application.Match(strdatum, Sheets(w3).Columns(20), 0)
' strdatum =1.1.2018
'Var = Fehler 2042
MsgBox datDatum
Var = Application.Match(datDatum, Sheets(w3).Columns(20), 0)
' datDatum = 01.01.2018
' Var = Fehler 2042
MsgBox CLng(datDatum)
Var = Application.Match(CLng(datDatum), Sheets(w3).Columns(20), 0)
' datDatum = 43101
' Var = 7
MsgBox CDbl(datDatum)
Var = Application.Match(CDbl(datDatum), Sheets(w3).Columns(20), 0)
' datDatum = 43101
' Var = 7

aber jetzt läuft es.
Viele Grüße

Casati
casati ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Ads
Antworten


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Besucher: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge anzufügen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

vB Code ist An.
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist An.
Gehe zu


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:49 Uhr.


Partner und Co.
Access-Paradies -Alles rund um die Datenbank Microsoft Access -Code -Programme-Tools -Tipps   Kostenlose Tipps & Tricks, Downloads und Programme   www.kulpa-online.com - Tipps - Tricks - Tutorials - Meinungen - Downloads uvm...   vb@rchiv · Willkommen in der Welt der VB Programmierung   Access-Garhammer - Hier finden Sie jede Menge Beispiel-Datenbanken zu Access und mehr ...   mcseboard.de   Die Top Seite für Excel-VBA-Makros uvm.

Powered by: vBulletin Version 3.6.2 (Deutsch)
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

Copyright ©2000-2018 MS-Office-Forum. Alle Rechte vorbehalten.
Copyright ©Design: Manuela Kulpa ©Rechte: Günter Kramer
Eine Verwendung der Inhalte in anderen Publikationen, auch auszugsweise,
ist ohne ausdrückliche Zustimmung der Autoren nicht gestattet.