Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1600to1604
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
Inhaltsverzeichnis

Datumerkennung bei VBA

Datumerkennung bei VBA
05.01.2018 23:07:08
Edi
Liebe Excel Gemeinde
Jetzt wende ich mich hier auch mal mit einer Frage zu Wort, die mich verzweifeln lässt.
Ich schreibe an einem umfaangreichen Code, der hier den Rahmen sprengen würde.
Darin jedoch benutze ich eine do loop Schleife
Do
If Month(Cells(a, 4)) = bytMonat Then a = a + 1
Loop Until Month(Cells(a, 4)) bytMonat
wobei bytMonat eine Variable ist, die einen vorher abgefragten Monat als Zahl übergeben bekommt.
An sich funktioniert der Code soweit einwandfrei, außer, die Variable enthält eine 12 für den Dezember, denn irgendwann ist die Liste zu Ende und es folgt unter dem letzten Datum eine leere Zelle.
Ja, und nun erkennt Excel nicht, dass eine leere Zelle ungleich dem Dezember ist.
Auch ein simples
MsgBox Month(Cells(1, 1)
bringt es an den Tag.
Steht in A1 ein Datum, wird der Monat korrekt angezeigt.
Ist die Zelle leer, erhalte ich eine 12.
Was kann ich tun?
Viele Grüße
Edi

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Datumerkennung bei VBA
06.01.2018 00:24:16
Mullit
Hallo,
so in die Richtung, Byte ist übrigens Banane, nimm Long:
Do
If Month(Cells(a, 4).Value) = bytMonat Then a = a + 1
Loop Until Month(Cells(a, 4).Value)  bytMonat Or IsEmpty(Cells(a, 4).Value)

Gruß, Mullit
AW: Datumerkennung bei VBA
06.01.2018 00:37:34
Edi
Hallo Mullit
Eine ODER Verknüpfung.
Da wäre ich jetzt nicht drauf gekommen, dass das geht.
Danke für den Tipp.
Trotzdem komisch, dass eine leere Zelle einen Monat zurückgibt.
Noch die Frage, warum ist byte Banane?
Der Wert kann 12 nicht übersteigen.
AW: Datumerkennung bei VBA
06.01.2018 06:31:38
Hajo_Zi
eine leere Zelle ist 00.01.1900 also Januar.

Ich gebe keinen Dank für eine Rückmeldung, da ich durch solche Beiträge nicht meine Beitragszahl erhöhen muss.
Also ich schreibe keine Beiträge mit dem Betreff "Gerne u. Danke für die Rückmeldung....."
Rückmeldung ist ja in der Heutigen Zeit nicht üblich und die wenigen die eine Rückmeldung geben,
mögen mir das verzeihen, das kein Danke für eine Rückmeldung kommt.
Beiträge von Werner, Luc, robert und folgende lese ich nicht.
Anzeige
AW: Datumerkennung bei VBA
06.01.2018 11:29:11
Mullit
Hallo,
@Edi: Byte wird nur benötigt, wenn best. Funktionen diesen Datentyp verwenden und erfordern, andernfalls ist für ganze Zahlen der Long-Datentyp in VBA am performantesten...
@ Hajo: Das sieht die Month-Funktion leider anders....
Userbild
Option Explicit
Public Sub test()
MsgBox ActiveCell.Address & " ist " & IIf(IsEmpty(ActiveCell.Value), "", "nicht") & _
" leer und zeigt Monat: " & Month(ActiveCell.Value)
End Sub

Gruß, Mullit
Anzeige
AW: Datumerkennung bei VBA
06.01.2018 14:08:01
Edi
Danke für den Hinweis.
bin halt noch eher Neuling.
Dann werde ich in Zukunft auf long umsteigen.
Ich habe jetzt noch eine andere Lösung realisiert, noch bevor die Antwort kam.
Ich benutze jetzt den .End(xldown) um in den letzten Datensatz zu springen und nutze dann die Schleife von unten nach oben, also mit a=a-1.
Damit schließe ich aus, dass eine leere Zelle getroffen wird.
Aber Or ist natürlich auch super. ich wusste nicht, dass man die Endbedingung mit Or verknüpfen kann

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige