Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
736to740
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
736to740
736to740
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Inputbox und abbrechen

Inputbox und abbrechen
24.02.2006 07:32:44
Gisela
Hallo,
ich erhalte bei der Inputbox bei Klick auf Abbrechen immer die Fehlermeldung "Typen unverträglich".
Kann mir bitte jemand helfen.
Da ich das Makro aus dem Forum habe, aber meine Kenntnisse für eine Änderung nicht reichen, brauche ich Eure Hilfe.

Sub Datum()
Application.ScreenUpdating = False
Sheets("Datum").Select
[A2:L2000].ClearContents
[A2].Select
Sheets("Vorsorge").Select
Dim WS1 As Worksheet, WS2 As Worksheet
Dim var As Date
Dim datAnfang As Date
Dim datEnde As Date
Dim I, lZeile1, lZeile2
'mit Datevalue bist Du variabel bei der Eingabe
datAnfang = DateValue(InputBox("Anfangsdatum")) ''''diese Zeile ist gelb markiert
datEnde = DateValue(InputBox("Enddatum"))
var = Application.InputBox("Datum eingeben")
If var = False Or Not IsDate(var) Then
Exit Sub
Set WS1 = Worksheets("Vorsorge")
Set WS2 = Worksheets("Datum")
'letzten Eintrag ermitteln
lZeile1 = WS1.Cells(Rows.Count, 2).End(xlUp).Row
For I = 2 To lZeile1
'überprüfen, ob Datum aus SpalteL im Datumsbereich
If WS1.Cells(I, 12) >= datAnfang And WS1.Cells(I, 12) <= datEnde Then
'ermitteln des letzten Eintrags in Tabelle2
lZeile2 = WS2.Cells(Rows.Count, 12).End(xlUp).Row
'Daten aus SpalteA bis SpalteL kopieren
Range(WS2.Cells(lZeile2 + 1, 1), WS2.Cells(lZeile2 + 1, 12)).Value = _
Range(WS1.Cells(I, 1), WS1.Cells(I, 12)).Value
Range(WS2.Cells(lZeile2 + 1, 1), WS2.Cells(lZeile2 + 1, 12)).NumberFormat = "dd.mm.yyyy"
End If
Next I
Sheets("Datum").Select
Range("A:A,E:E,F:F,G:G,H:H,I:I,J:J").Select
[J1].Activate
Selection.NumberFormat = "0"
[A2:L2000].Select
[L2].Activate
Selection.Sort Key1:=Range("L2"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
Range("A2").Select
UserForm4.Hide
Userform6.Show
End If
End Sub

Vielen Dank für jede Hilfe
Gisela

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

Betreff
Datum
Anwender
Anzeige
AW: Inputbox und abbrechen
24.02.2006 07:58:34
UweD
Hallo
Fehlerursache
Rückgabewert bei 'Abbrechen ist "", das kann nicht in ein Datum verwandelt werden..
ich würde es so machen.
Dimensionieren der Variablen als Variant und die Inputbox so abfragen...
'...
Do
datAnfang = InputBox("Anfangsdatum")
Loop Until Len(datAnfang) = 10
datAnfang = DateValue(datAnfang)
'...
analog bei den anderen inputboxen
Gruß UweD
(Rückmeldung wäre schön)
AW: Inputbox und abbrechen
24.02.2006 08:25:15
Gisela
Hallo Uwe,
vielen Dank für Deine Hilfe. Aber irgendwie klappts nicht - oder ich kapiers nicht.
Habs jetzt so mal geändert:

Sub Datum()
Application.ScreenUpdating = False
Sheets("Datum").Select
[A2:L2000].ClearContents
[A2].Select
Sheets("Vorsorge").Select
Dim WS1 As Worksheet, WS2 As Worksheet
Dim var As Date
Dim datAnfang As Date
Dim datEnde As Date
Dim I, lZeile1, lZeile2
'mit Datevalue bist Du variabel bei der Eingabe
Do
datAnfang = InputBox("Anfangsdatum")'''''ist jetzt als Fehler markiert
Loop Until Len(datAnfang) = 10
datAnfang = DateValue(datAnfang)
'datAnfang = DateValue(InputBox("Anfangsdatum"))
Do
datEnde = InputBox("Enddatum")
Loop Until Len(datEnde) = 10
datEnde = DateValue(datEnde)
'datEnde = DateValue(InputBox("Enddatum"))
var = Application.InputBox("Datum eingeben")
If var = False Or Not IsDate(var) Then
Exit Sub
Set WS1 = Worksheets("Vorsorge")
Set WS2 = Worksheets("Datum")
'letzten Eintrag ermitteln
lZeile1 = WS1.Cells(Rows.Count, 2).End(xlUp).Row
For I = 2 To lZeile1
'überprüfen, ob Datum aus SpalteL im Datumsbereich
If WS1.Cells(I, 12) >= datAnfang And WS1.Cells(I, 12) <= datEnde Then
'ermitteln des letzten Eintrags in Tabelle2
lZeile2 = WS2.Cells(Rows.Count, 12).End(xlUp).Row
'Daten aus SpalteA bis SpalteL kopieren
Range(WS2.Cells(lZeile2 + 1, 1), WS2.Cells(lZeile2 + 1, 12)).Value = _
Range(WS1.Cells(I, 1), WS1.Cells(I, 12)).Value
Range(WS2.Cells(lZeile2 + 1, 1), WS2.Cells(lZeile2 + 1, 12)).NumberFormat = "dd.mm.yyyy"
End If
Next I
Sheets("Datum").Select
Range("A:A,E:E,F:F,G:G,H:H,I:I,J:J").Select
[J1].Activate
Selection.NumberFormat = "0"
[A2:L2000].Select
[L2].Activate
Selection.Sort Key1:=Range("L2"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
Range("A2").Select
UserForm4.Hide
Userform6.Show
End If
End Sub

Vielleicht kannst Du ja mal schauen, was da falsch ist oder ob es noch eine andere Lösung gibt.
Vielen Dank und Grüße
Gisela
Anzeige
AW: Inputbox und abbrechen
24.02.2006 08:29:06
UweD
Hallo
du hast die Dimensionierung immer noch auf Date stehen, die Inputbox bringst aber Text zurück...
so

Sub Datum()
Application.ScreenUpdating = False
Sheets("Datum").Select
[A2:L2000].ClearContents
[A2].Select
Sheets("Vorsorge").Select
Dim WS1 As Worksheet, WS2 As Worksheet
Dim var As Variant
Dim datAnfang As Variant
Dim datEnde As Variant
Dim I, lZeile1, lZeile2
'mit Datevalue bist Du variabel bei der Eingabe
Do
datAnfang = InputBox("Anfangsdatum") '''''ist jetzt als Fehler markiert
Loop Until Len(datAnfang) = 10
datAnfang = DateValue(datAnfang)
'datAnfang = DateValue(InputBox("Anfangsdatum"))
Do
datEnde = InputBox("Enddatum")
Loop Until Len(datEnde) = 10
datEnde = DateValue(datEnde)
'datEnde = DateValue(InputBox("Enddatum"))
var = Application.InputBox("Datum eingeben")
If var = False Or Not IsDate(var) Then
Exit Sub
Set WS1 = Worksheets("Vorsorge")
Set WS2 = Worksheets("Datum")
'letzten Eintrag ermitteln
lZeile1 = WS1.Cells(Rows.Count, 2).End(xlUp).Row
For I = 2 To lZeile1
'überprüfen, ob Datum aus SpalteL im Datumsbereich
If WS1.Cells(I, 12) >= datAnfang And WS1.Cells(I, 12) <= datEnde Then
'ermitteln des letzten Eintrags in Tabelle2
lZeile2 = WS2.Cells(Rows.Count, 12).End(xlUp).Row
'Daten aus SpalteA bis SpalteL kopieren
Range(WS2.Cells(lZeile2 + 1, 1), WS2.Cells(lZeile2 + 1, 12)).Value = _
Range(WS1.Cells(I, 1), WS1.Cells(I, 12)).Value
Range(WS2.Cells(lZeile2 + 1, 1), WS2.Cells(lZeile2 + 1, 12)).NumberFormat = "dd.mm.yyyy"
End If
Next I
Sheets("Datum").Select
Range("A:A,E:E,F:F,G:G,H:H,I:I,J:J").Select
[J1].Activate
Selection.NumberFormat = "0"
[A2:L2000].Select
[L2].Activate
Selection.Sort Key1:=Range("L2"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
Range("A2").Select
UserForm4.Hide
Userform6.Show
End If
End Sub

Gruß UweD
(Rückmeldung wäre schön)
Anzeige
AW: Inputbox und abbrechen
24.02.2006 09:09:37
Gisela
Hallo Uwe,
vielen Dank für Deine Mühe. Es funktioniert jetzt ohne Fehlermeldung. Was muss ich aber machen, damit nach Klick auf Abbrechen die Inputbox geschlossen wird. Nach Abbrechen werden zwar die eingegebenen Datumseingaben gelöscht, aber die Inputbox nicht geschlossen. So siehts im Moment aus:

Sub Datum()
Application.ScreenUpdating = False
Sheets("Datum").Select
[A2:L2000].ClearContents
[A2].Select
Sheets("Vorsorge").Select
Dim WS1 As Worksheet, WS2 As Worksheet
Dim var As Variant
Dim datAnfang As Variant
Dim datEnde As Variant
Dim I, lZeile1, lZeile2
'mit Datevalue bist Du variabel bei der Eingabe
Do
datAnfang = InputBox("Anfangsdatum")
Loop Until Len(datAnfang) = 10
datAnfang = DateValue(datAnfang)
Do
datEnde = InputBox("Enddatum")
Loop Until Len(datEnde) = 10
datEnde = DateValue(datEnde)
Set WS1 = Worksheets("Vorsorge")
Set WS2 = Worksheets("Datum")
'letzten Eintrag ermitteln
lZeile1 = WS1.Cells(Rows.Count, 2).End(xlUp).Row
For I = 2 To lZeile1
'überprüfen, ob Datum aus SpalteL im Datumsbereich
If WS1.Cells(I, 12) >= datAnfang And WS1.Cells(I, 12) <= datEnde Then
'ermitteln des letzten Eintrags in Tabelle2
lZeile2 = WS2.Cells(Rows.Count, 12).End(xlUp).Row
'Daten aus SpalteA bis SpalteL kopieren
Range(WS2.Cells(lZeile2 + 1, 1), WS2.Cells(lZeile2 + 1, 12)).Value = _
Range(WS1.Cells(I, 1), WS1.Cells(I, 12)).Value
Range(WS2.Cells(lZeile2 + 1, 1), WS2.Cells(lZeile2 + 1, 12)).NumberFormat = "dd.mm.yyyy"
End If
Next I
Sheets("Datum").Select
Range("A:A,E:E,F:F,G:G,H:H,I:I,J:J").Select
[J1].Activate
Selection.NumberFormat = "0"
[A2:L2000].Select
[L2].Activate
Selection.Sort Key1:=Range("L2"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
Range("A2").Select
UserForm4.Hide
Userform6.Show
End Sub

Vielen Dank und Grüße
Gisela
Anzeige
AW: Problem gelöst, vielen Dank,schönes Wochenende
24.02.2006 09:43:37
Gisela
o

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige