Hallo Forum
Ich bin VBA-Anfänger und habe mir ein Makro mit Hilfe des Forums und anderen Hilfen gebastelt. Das Makro funktioniert eigentlich soweit ganz gut bis auf einen Punkt. Und zwar bekomme ich einfach nicht hin, dass in der InputBox ein fehlerhaftes Datum (z.B. 32.12.2016 oder 29.2.2017 oder einfach nur eine Zahl "5" als fehlerhaft zurückgewiesen wird.
Das Makro sieht wie folgt aus:
Option Explicit
Private Sub Workbook_BeforeClose(Cancel As Boolean)
'Das Makro soll Tage in einem bestimmten Bereich zusammenzählen und dann ein (und in der Folge weitere) Pop-Up-Fenster öffnen
Dim Bereich As range
Dim Box As String
Box = "MsgBox"
'Dieser Bereich soll zusammengezählt werden
Set Bereich = Tabelle1.range("d15:d40")
'Summe soll in Zelle D41 geschrieben werden
Tabelle1.range("d41").Value = Application.WorksheetFunction.Sum(Bereich)
'Zelle G2 ungleich geprüft
If range("g2").Value <> "geprüft" Then
'Bereich grösser als 90 (Tage)
If range("d41") >= 90 Then
MsgBox "Heizung prüfen! (>= 90 Tage)", vbOKOnly + vbExclamation
Box = MsgBox("Wurde die Heizung geprüft?", vbYesNoCancel + vbQuestion")
If Box = vbYes Then
ThisWorkbook.Sheets("Tabelle1").range("g2").Value = "geprüft"
ThisWorkbook.Sheets("Tabelle1").range("h2").Value = VBA.Environ("UserName")
ThisWorkbook.Sheets("Tabelle1").range("i2").Value = Format(Now, "DD.MM.YYYY_HH:MM:SS")
range("g2:i2").Interior.ColorIndex = 4
ThisWorkbook.Sheets("Tabelle1").range("g10").Value = InputBox("Welche Firma?")
ThisWorkbook.Sheets("Tabelle1").range("g13").Value = InputBox("Wann geprüft? Bitte Datum eingeben!", , Format(Now, "DD.MM.YYYY"))
If IsDate(range("g13").Text) Then
range("g13").Value = Format(range("g13").Text, "DD.MM.YYYY")
Else
range("g13").Value = "Bitte korrektes Datum eingeben" 'Schreibt Text in Zelle G13 wenn Eingabe leer
End If
ElseIf Box = vbNo Then
ThisWorkbook.Sheets("Tabelle1").range("g2").Value = "NICHT geprüft!!!"
ThisWorkbook.Sheets("Tabelle1").range("h2").Value = VBA.Environ("UserName")
ThisWorkbook.Sheets("Tabelle1").range("i2").Value = Format(Now, "DD.MM.YYYY_HH:MM:SS")
range("g2:i2").Font.Bold = True
range("g2:i2").Interior.ColorIndex = 3
Else
MsgBox "Warum brichst Du ab?"
End If
End If
End If
End Sub
Wie geschrieben, bin ich VBA-Anfänger von dem her könnte das Makro vermutlich besser oder anders dargestellt werden :-) . Wer kann mir helfen?
Besten Dank für Eure Hilfe.
Daniel
|