Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

InputBox Schaltfläche Abbrechen
#1
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
Antworten Top
#2
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
Antworten Top
#3
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
Antworten Top
#4
Hallo Herbert,

ja, ich hatte mich leicht vertan.  Blush
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
Antworten Top
#5
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
Antworten Top
#6
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
Antworten Top
#7
Hallo Uwe,

danke, funktioniert bestens.
LG Herbert
Windows 10
Office 365
Antworten Top
#8
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
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste