Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
1860to1864
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
Datum mit letztem Eintrag vergleichen
19.12.2021 21:18:05
Frank
Hallo, ich habe mit folgendem Code hin und wieder Probleme:

'Datum überprüfen (nicht gleich oder niedriger als letzter Eintrag)
With Sheets("Tabelle1")
LetzteVal = CDate(.Range("A99999").End(xlUp).Value)
Set z = .Columns(1).Find(What:=TextBox1.Value, LookAt:=xlWhole, LookIn:=xlValues)
If DateDiff("d", LetzteVal, CDate(TextBox1)) 
Hier soll überprüft werden, ob das Datum in der TextBox größer ist als der letzte Eintrag in der Tabelle.
Funktioniert auch wenn Tabelle1 geöffnet ist, ist aber z.B. ein anderes Diagramm geöffnet Crasht es bei einer seltener Konstellation bei Zeile LetzteVal.
An was könnte das liegen?
Frank

13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Datum mit letztem Eintrag vergleichen
19.12.2021 21:29:23
ralf_b
dann solltest du die Referenz auf das Worksheet , um das Workbook erweitern.
Möglicherweise ist das andere aktive Diagram ebenfalls in einem Blatt namens "Tabelle1"
is aber nur geraten.
AW: Datum mit letztem Eintrag vergleichen
19.12.2021 21:48:02
Frank
Nein, das trifft leider nicht zu, es gibt keine doppelte Namensgebungen.
Frank
AW: Datum mit letztem Eintrag vergleichen
20.12.2021 05:28:06
Udo.D
Morgen Frank,
anstatt Sheets("Tabelle1") ... mal Sheets(1) probiert oder ActiveSheet ?
End With fehlt am Ende, das weist du eh ...
LG Udo.D
AW: Datum mit letztem Eintrag vergleichen
20.12.2021 08:19:44
PawelPopolski
Hast du es getestet oder ist das nur nach Gefühl beantwortet? Gefühle können täuschen!
AW: Datum mit letztem Eintrag vergleichen
21.12.2021 10:25:31
Yal
Hallo Frank,
ich kann mich nicht vorstellen, dass Excel eine Meldung ausgibt: "ich crashe jetzt bei einer seltener Kombination". Die Helfer sprechen nicht nur "excelisch", aber wenn Du uns mitteilen möchtest, was Excel Dir mitgeteilt hat, muss es schon unübersetzt rüberkommen.
Ralf, Udo und Pavel haben Hinweise gegeben. Alles zusammen:
irgendjemand hat Dir den Code
LetzteVal = CDate(.Range("A99999").End(xlUp).Value)
in die Hande gegeben (kommt mir verdächtig bekannt vor).
Dieses Code funktioniert nur bei Tabellen ab Excel 2007. Davor endet ein Blatt bei Zeile 65536. Du könntest in
LetzteVal = CDate(.Range("A65000").End(xlUp).Value)
oder
LetzteVal = CDate(.Cells(.Rows.Count, 1).End(xlUp).Value)
ändern. Ist sicherer, wird aber in dem Fall nur bedingt helfen.
Sheet ist nicht Worksheet. Worksheet ist ein Tabellenblatt. Ein Diagramblatt ist auch ein "Sheet". Wenn darin ein Range("A1") gesucht wird, geht es schief.
Ausserdem ist Worksheet oder Sheet immer relativ. Daher davor "ThisWorkbook" oder Workbooks("xy") anstellen. Wenn es zufälligerweise heute keine andere Blatt mit demselben Namen gibt, andert es nichts daran, dass es morgen der Fall sein kann (Murphy sagt sogar: wird).
Ein Code zum Spielen:

Sub SheetType_auflisten()
Dim W, S
For Each W In Workbooks
Debug.Print W.Name
For Each S In W.Sheets
Debug.Print vbTab & S.Name & ": " & SheetType(S.Type)
Next
Next
End Sub
Private Function SheetType(Wert As Long) As String
Select Case Wert
Case xlChart: SheetType = "xlChart"
Case xlDialogSheet: SheetType = "xlDialogSheet"
Case xlExcel4IntlMacroSheet: SheetType = "xlExcel4IntlMacroSheet"
Case xlExcel4MacroSheet: SheetType = "xlExcel4MacroSheet"
Case xlWorksheet: SheetType = "xlWorksheet"
End Select
End Function
damit gehst alle geöffnete Workbook durch und davon alle "Sheets" und prüft, welche Sheet-Typ sie haben.
Ausgabe ist im VB-Direktfenster (Ansicht, Direktfenster)
VG
Yal
Anzeige
AW: Datum mit letztem Eintrag vergleichen
23.12.2021 19:42:57
Frank
Hallo, vielen Dank für die gute Hilfestellungen.
Leider bin ich noch gar nicht dazu gekommen die Ursache zu finden, da ich vorher noch ein anderes Datumsproblem lösen muss.
Der Code vergleicht ja das Datum des letzten Eintrags mit der TextBox.
Im anderen Formular möchte ich gerne das Datum, welches über eine ListBox geladen wurde , ändern.
Hier soll folgendes überprüft werden:
a) das neue Datum aus der TextBox darf nicht gleich oder höher als die folgende Zeile sein
b) das neue Datum darf nicht gleich oder höher sein als die folgende Zeile UND nicht gleich oder niedriger sein als die vorherige Zeile
Nach welchem Schema könnte hier vorgegangen werden?
Gruß Frank.
Anzeige
AW: Datum mit letztem Eintrag vergleichen
23.12.2021 21:46:04
Yal
Hallo Frank,
Im Datenbank-Vokabular handelt es sich um eindeutige Indexierung und Sortierung.
Eindeutige Indexierung bedeutet, dass ein Datum nicht zweimal vorkommen darf. Wenn eine bereit vorhandene Daten verwendet wird, sollte der bisherige Eintrag geändert und nicht einen neuen kreiert werden.
Sortierung, weil es in den Fall fast egal, in welcher Reihenfolge eingetragen wird, hauptsache es wird anschließend sortiert.
Der erste könnte mit einem SVerweis behandelt werden ( VLookup in VBA). Der zweite mit Sortierung.
VG
Yal
AW: Datum mit letztem Eintrag vergleichen
23.12.2021 21:52:35
Frank
Hallo Yal und Danke für die Info!
Ich denke ich muss mich eindeutiger ausdrücken, am besten mit einem Beispiel:
Datumseinträge stehen in aufsteigend in Spalte ab A2, über ein ListBox hole ich mir die Einträge und editiere diese in einer TextBox (z.B. wenn das Datum falsch eingegeben wurde).
Nun möchte ich z.B. das Datum aus A10 ändern, dieses muss aber zwischen A9 und A11 liegen.
Wie kann am besten geprüft werden?
Gruß Frank.
Anzeige
AW: Datum mit letztem Eintrag vergleichen
23.12.2021 22:14:30
Frank
Ich stelle mir das so ungefähr vor... (Code funktioniert so nicht!)

Dim zeile
zeile = StromEGaendern1.ListBox1.ListIndex + 2
With Sheets("Tabelle1")
If DateDiff("d", zeile - 1, CDate(TextBox1)) = 0 Then
TextBox1.ForeColor = vbRed
Else
TextBox1.ForeColor = vbBlack
End If

AW: Datum mit letztem Eintrag vergleichen
24.12.2021 09:57:13
ralf_b
Hallo Frank,
sind die zu vergleichenden Werte auch in der Listbox oder muß man auf die Tabelle gehen?
Der Vergleich funktioniert nicht weil du zwei total verschiedene Werte vergleichen willst.
Dir fehlt die Zuordnung der Zeilennummer zum Zellbereich Range oder Cells

DateDiff("d", Range("A"&zeile - 1), CDate(TextBox1))
evtl muß der Wert aus der Range noch in cdate gewandelt werden.
Da Datumswerte aber im Grunde Zahlen sind würde eine Umwandlung in Double und dann ein größer/kleiner Vergleich reichen.
24.12.2021 44554
25.12.2021 44555
26.12.2021 44556
Es wäre dann nur noch zu prüfen ob deine Zeilenwerte sich noch in der Tabelle befinden und das Range auch ein Datum enthält, um Fehler zu vermeiden.
Anzeige
AW: Datum mit letztem Eintrag vergleichen
24.12.2021 10:09:55
Frank
Hallo Ralf,
genau, diesen Einfall hatte ich heute bereits auch schon mit der Angabe der Zelle und funktioniert auch soweit.

Es wäre dann nur noch zu prüfen ob deine Zeilenwerte sich noch in der Tabelle befinden und das Range auch ein Datum enthält, um Fehler zu vermeiden.
Wie genau kann man den Fehler abfangen?
Und einen weiteren Wertevergleich funktioniert nach folgendem Schema auch noch nicht, wo liegt hier der Fehler?

If .Range("D" & zeile + 1).Value 
Gruß Frank
AW: Datum mit letztem Eintrag vergleichen
24.12.2021 11:06:20
Frank
Nochmals vielen Dank für die Denkanstöße!
Funktioniert nun doch alles wie gewünscht ein *1 bei

TextBox4.Value
hat geholfen

If .Range("A" & zeile + 1)  "" Then
If .Range("D" & zeile + 1).Value 
Gruß Frank.
Anzeige
AW: Datum mit letztem Eintrag vergleichen
24.12.2021 18:56:26
ralf_b

Wie genau kann man den Fehler abfangen?

hat sich das auch erledigt?

303 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige