Registriert seit: 11.04.2014
Version(en): 365
Hallo,
Ich möchte über eine InputBox das Datum für eine Filterauswahl setzen.
Vorgabe ist heutiges Datum.
Funktioniert auch, aber wenn ich den Abbrechen Button klicke kommt ein "Laufzeitfehler 13" Typen unverträglich.
Wie kann ich bei klick auf Abbrechen das Makro beenden.
Code:
Sub Makro1()
Dim sTxt As Date
sTxt = InputBox("Bitte Datum bis eingeben" & Chr(13) & Chr(13) & "Datumeingabe TT.MM.JJJJ", "Eingabe Datum", Date)
ActiveSheet.ListObjects("Tabelle1").Range.AutoFilter Field:=11, Criteria1 _
:="<" & CDbl(sTxt), Operator:=xlAnd
End Sub
LG Herbert
Windows 10
Office 365
Registriert seit: 17.04.2014
Version(en): MS Office 365(32)
Hallo Herbert,
vielleicht so?
Sub Makro1()
Dim sTxt As String
sTxt = InputBox("Bitte Datum bis eingeben" & Chr(13) & Chr(13) & "Datumeingabe TT.MM.JJJJ", "Eingabe Datum", Date)
If Not CVar(sTxt) = False Then
ActiveSheet.ListObjects("Tabelle1").Range.AutoFilter Field:=11, Criteria1 _
:="<" & CDbl(CDate(sTxt)), Operator:=xlAnd
End If
End Sub
Gruß Uwe
Registriert seit: 11.04.2014
Version(en): 365
Hallo Uwe,
danke für die Rückmeldung, aber es kommt die gleiche FM
Ich habe noch weiter gesucht und folgendes gefunden.
Code:
Sub Makro1()
Dim sTxt As Variant
sTxt = InputBox(prompt:="Bitte Datum eingeben" & Chr(13) _
& Chr(13) _
& "Vorgabedatum = Heute" _
& Chr(13) & "Datumeingabe im Format TT.MM.JJJJ", _
Title:="Eingabe Datum", Default:=Format(Date, "dd.mm.yyyy"))
If sTxt = "" Then Exit Sub
sTxt = CDate(sTxt)
ActiveSheet.ListObjects("HaftGesamt").Range.AutoFilter Field:=11, Criteria1 _
:="<=" & CDbl(sTxt), Operator:=xlAnd
End Sub
Damit funktioniert es.
LG Herbert
Windows 10
Office 365
Registriert seit: 17.04.2014
Version(en): MS Office 365(32)
Hallo Herbert,
ja, ich hatte mich leicht vertan.
So würde ich es machen:
Sub Makro1()
Dim sTxt As String
sTxt = InputBox("Bitte Datum bis eingeben" & Chr(13) & Chr(13) & "Datumeingabe TT.MM.JJJJ", "Eingabe Datum", Date)
If IsDate(sTxt) Then
ActiveSheet.ListObjects("Tabelle1").Range.AutoFilter Field:=11, Criteria1 _
:="<" & CDbl(CDate(sTxt)), Operator:=xlAnd
End If
End Sub
Gruß Uwe
Registriert seit: 11.04.2014
Version(en): 365
Hallo Uwe,
danke, das gefällt mir noch besser.
Wenn ich das richtig verstehe, kann ich jetzt auch noch zusätzlich auf die richtige Formateingabe beim Datum reagieren.
Code:
Sub Makro1()
Dim sTxt As String
sTxt = InputBox("Bis zu welchem Datum soll angezeigt werden?" & Chr(13) _
& Chr(13) _
& "Vorgabedatum = Heute" _
& Chr(13) & "Datumeingabe im Format TT.MM.JJJJ", _
"Eingabe Datum", Date)
If IsDate(sTxt) Then
ActiveSheet.ListObjects("Tabelle1").Range.AutoFilter Field:=11, Criteria1 _
:="<" & CDbl(CDate(sTxt)), Operator:=xlAnd
ElseIf sTxt = "" Then
Exit Sub
Else
aWert = MsgBox("Datum wurde mit falschem Format erfasst!", vbRetryCancel + vbCritical, "Format")
If aWert = 2 Then
Exit Sub
ElseIf aWert = 4 Then
Makro1
End If
End If
End Sub
Stimmt das so?
LG Herbert
Windows 10
Office 365
Registriert seit: 17.04.2014
Version(en): MS Office 365(32)
Hallo Herbert,
Du solltest alle Variablen deklarieren. Die ganzen Exit Subs sind unnötig:
Sub Makro1()
Dim sTxt As String
sTxt = InputBox("Bis zu welchem Datum soll angezeigt werden?" & Chr(13) _
& Chr(13) _
& "Vorgabedatum = Heute" _
& Chr(13) & "Datumeingabe im Format TT.MM.JJJJ", _
"Eingabe Datum", Date)
If IsDate(sTxt) Then
ActiveSheet.ListObjects("Tabelle1").Range.AutoFilter Field:=11, Criteria1 _
:="<" & CDbl(CDate(sTxt)), Operator:=xlAnd
ElseIf Len(sTxt) Then
If MsgBox("Datum wurde mit falschem Format erfasst!", vbRetryCancel + vbCritical, "Format") = 4 Then
Makro1
End If
End If
End Sub
Gruß Uwe
Registriert seit: 11.04.2014
Version(en): 365
Hallo Uwe,
danke, funktioniert bestens.
LG Herbert
Windows 10
Office 365
Registriert seit: 12.03.2016
Version(en): Excel 2003
04.08.2016, 23:47
(Dieser Beitrag wurde zuletzt bearbeitet: 08.08.2016, 10:22 von Rabe.
Bearbeitungsgrund: überflüssige Zeilenumbrüche entfernt
)
Hallo
ich sehe viel Aufwand für eine Aufgabe die m.E. viel einfacher zu lösen ist
Ich setz die Variable für InputBox oder MsgBox mit vbOkCancel Abfragen grunsaetzlich auf Variant
Dann kann Excel den Variable Typ selbst festlegen. Mache ich auch wenn icjh Zahlen erwarte, es aber auch Text sein könnte. Oder ich von einem String den Tex oder eine Zahl abschneiden muss.
mfg Gast 234