MS-Office-Forum
Google
   

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

Banner und Co.

Antworten
Ads Der Renner, 11 Entwicklertools für Access, Tipps & Trick und offene Datenbanken zum einzigartigen Preis.
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
In diesem Forum, kann der Beitrag als gelöst gekennzeichnet werde (unten Links). Bitte macht dies. Damit es auch in der Forumsübersicht gekennzeichnet ist.
Bitte Version angeben. Bei keiner Angabe gehe ich von meinen Angaben aus.
Betriebssystem: Windows 10 - 64 Bit, Office 2016 - 32 Bit.
Hajo_Zi ist offline  
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 00:29 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 - 2017, Jelsoft Enterprises Ltd.

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