Die 15 wichtigsten VBA-Funktionen für Zahlen und Datum

Mit diesen Funktionen lassen sich über 90 Prozent des VBA-Codes programmieren!

3.07143
(14)
Beitrag bewerten
Kommentar schreiben
Stand: 25. Mai 2011

Angesichts einer schier unüberschaubaren Menge an Objekten, Methoden und Eigenschaften in VBA schrecken viele vor der VBA-Programmierung zurück. Dabei lassen sich mit gerade einmal 15 Funktionen für Zahlen und Datum weit über 90 % des VBA-Codes programmieren.

Auch wenn es auf den ersten Blick vielleicht nicht ersichtlich ist, sind Datumswerte auch "nur" Zahlen. Weihnachten 2011 beispielsweise entspricht der Zahl 40.901, weil so viele Tage seit dem Tag 1 (dem 1.1.1900) vergangen sind. Um eine Uhrzeit zu speichern, wird deren Anteil an den jeweiligen 24 Stunden ermittelt: 0,5 ist 12:00 Uhr oder 16:30 Uhr ist 0,6875.

Daher lässt sich vergleichsweise leicht mit Datumsangaben rechnen: eine Woche später ist +7 und 12 Stunden früher ist -0,5. Für andere Differenzen müssen Sie entweder rechnen (1 Stunde später entspricht +1/24) oder die speziellen Funktionen wie DateAdd() einsetzen.

Folgende Funktionen werden vorgestellt:

  • Day(), Month(), Year()

  • Format()

  • DateAdd(), DateDiff()

  • IsNumeric(), IsDate(), IsNull()

  • Val()

  • CInt(), CLng(), CDbl()

  • CDate()

  • Round()

Inhaltsverzeichnis

Beitrag bewerten

Ihre Wertung:

 

Datumseingabe in Access und VBA in Access

In dem Wortlaut steht das VBA immer die US Schreibweise verwendet

Irrtum

Datefelder können in der Form 11-12-2015 eingegeben werden

Das Problem jedoch, das bei Eingabe von 12.14.2015 in ein Feld vom Format Date in Access er daraus 14.12.macht

Die Tag Monat und Jahr Abfrage liefert bei 11.12.2015 ein 11,12,2015

Die Tag Monat und Jahr Abfrage liefert bei 12.14.2015 ein 14,12,2015

Auch der isdate arbeitet inkorrekt und das ganze lässt sich durch eine Funktion die vor die Feldaktualisierung eingebracht wird nicht abfangen.

Es hilft nur eine Verwendung eines Eingabefeldes vom Typ String dessen Wert man zuerst per VBA auf Gültigkeit prüft und danach diesen String in das Datumsfeld des Datensatzes einbringt.
Dies geht in Access ja durch das unsichtbar machen des Datensatzfeldes und das sichtbar machen des Eingabefeldes. Dabei auf Aktivierung und Sperung achten.

Bsp. Stellen zwischen 1.tem und 2.ten Punkt auf Gültigkeit 1-12 testen.
Ich habe eine Function geschrieben die gleichzeitig die Eingaben im Format 1.1.2015, 1-12-2015 oder 2/4/2015 erlaubt

Private Function Datumtest(ByVal Datumstring As String) As Boolean

Dim Zaehler As Integer
Dim Pospunkt(1) As Integer
Dim Posstrich(1) As Integer
Dim Posbindestrich(1) As Integer
Zaehler = 0

If Len(Datumstring) > 10 Or Len(Datumstring) < 6 Then
'len(1.1.12)=6 len(12.12.2015)=10
MsgBox "Datum inkorrekt. Eingabe wie dd/mm/yyyy oder d/m/yy oder d.mm.yyyy erforderlich !"
Datumtest = False
Exit Function
End If

Do
Zaehler = Zaehler + 1
Select Case Asc(Mid$(Datumstring, Zaehler, 1))

Case 45 '- Bindestrich

If Zaehler > 1 And Posbindestrich(0) = 0 Then
Posbindestrich(0) = Zaehler
ElseIf Zaehler > 3 And Posbindestrich(1) = 0 Then
Posbindestrich(1) = Zaehler
Else
'Fehler da mehr als 2 Striche
MsgBox "Datum inkorrekt. Eingabe wie dd/mm/yyyy oder d-mm-yy oder d.mm.yyyy erforderlich !"
Datumtest = False
Exit Function
End If

Case 46 'Punkt
If Zaehler > 1 And Pospunkt(0) = 0 Then
Pospunkt(0) = Zaehler
ElseIf Zaehler > 3 And Pospunkt(1) = 0 Then
Pospunkt(1) = Zaehler
Else
'Fehler da mehr als 2 Punkte
MsgBox "Datum inkorrekt. Eingabe wie dd/mm/yyyy oder d-mm-yy oder d.mm.yyyy erforderlich !"
Datumtest = False
Exit Function
End If

Case 47 '/ Strich
If Zaehler > 1 And Posstrich(0) = 0 Then
Posstrich(0) = Zaehler
ElseIf Zaehler > 3 And Posstrich(1) = 0 Then
Posstrich(1) = Zaehler
Else
'Fehler da mehr als 2 Schrägstriche
MsgBox "Datum inkorrekt. Eingabe wie dd/mm/yyyy oder d-mm-yy oder d.mm.yyyy erforderlich !"
Datumtest = False
Exit Function
End If

Case 48 To 57
'Zahl zwischen 0 und 9
Case Else 'Kein korrektes Zeichen
MsgBox "Datum inkorrekt. Eingabe wie dd/mm/yyyy oder d/m/yy oder d.mm.yyyy erforderlich !"
Datumtest = False
Exit Function
End Select

Loop While Zaehler < 6
'nur 6 Durchläufe, da "12.12." 6 Zeichen lang

If Posbindestrich(0) <> 0 Then
If Pospunkt(0) <> 0 Or Posstrich(0) <> 0 Or Posbindestrich(1) = 0 Or Posbindestrich(0) + 1 = Posbindestrich(1) Then
MsgBox "Datum inkorrekt. Eingabe wie dd/mm/yyyy oder d/m/yy oder d.mm.yyyy erforderlich !"
Datumtest = False
Exit Function
Else
'Check ob Monatszahl >12
If Val(Mid$(Datumstring, Posbindestrich(0) + 1, Posbindestrich(1) - Posbindestrich(0) - 1)) > 12 Then
MsgBox "Datum inkorrekt. Eingabe wie dd/mm/yyyy oder d/m/yy oder d.mm.yyyy erforderlich !"
Datumtest = False
Exit Function

End If
End If
End If

If Pospunkt(0) <> 0 Then
If Posbindestrich(0) <> 0 Or Posstrich(0) <> 0 Or Pospunkt(1) = 0 Or Pospunkt(0) + 1 = Pospunkt(1) Then
MsgBox "Datum inkorrekt. Eingabe wie dd/mm/yyyy oder d/m/yy oder d.mm.yyyy erforderlich !"
Datumtest = False
Exit Function
Else
'Check ob Monatszahl >12
If Val(Mid$(Datumstring, Pospunkt(0) + 1, Pospunkt(1) - Pospunkt(0) - 1)) > 12 Then
MsgBox "Datum inkorrekt. Eingabe wie dd/mm/yyyy oder d/m/yy oder d.mm.yyyy erforderlich !"
Datumtest = False
Exit Function
End If
End If
End If

If Posstrich(0) <> 0 Then
If Posbindestrich(0) <> 0 Or Pospunkt(0) <> 0 Or Posstrich(1) = 0 Or Posstrich(0) + 1 = Posstrich(1) Then
MsgBox "Datum inkorrekt. Eingabe wie dd/mm/yyyy oder d/m/yy oder d.mm.yyyy erforderlich !"
Datumtest = False
Exit Function
Else
'Check ob Monatszahl >12
If Val(Mid$(Datumstring, Posstrich(0) + 1, Posstrich(1) - Posstrich(0) - 1)) > 12 Then
MsgBox "Datum inkorrekt. Eingabe wie dd/mm/yyyy oder d/m/yy oder d.mm.yyyy erforderlich !"
Datumtest = False
Exit Function
End If
End If
End If

If IsDate(Datumstring) Then
'Fehler wenn Datumeingabe z.B 12.14.2015, dies da er im Datumsfeld Tag und Monat wechselt
'Fehler auch bei month(12.15.2015), Access zeigt 12
'Darum vorab Check ob Monat >12
Datumtest = True
Else
Datumtest = False
End If

End Function

Bye

Mike

Mitglied werden, Vorteile nutzen!

  • Sie können alles lesen und herunterladen: Beiträge, PDF-Dateien und Zusatzdateien (Checklisten, Vorlagen, Musterbriefe, Excel-Rechner u.v.a.m.)
  • Unsere Autoren beantworten Ihre Fragen

Inhalt

Downloads zu diesem Beitrag

Newsletter abonnieren