Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1468to1472
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
Inhaltsverzeichnis

Brauche Hilfe

Brauche Hilfe
12.01.2016 09:17:53
Michael
Hallo Zusammen,
ich möchte auf einer Userform mit zwei Textboxen den Druckzeitraum bestimmen. Um das Originaltabellenblatt vor Veränderungen zu schützen, wird es im Hintergrund kopiert, sortiert und daraus soll der Druckbereich bestimmt werden. Anschließend werden die Daten an eine Druckvorlage übergeben mit den entsprechenden Daten. Nach Anzeige als pdf. wird das kopierte Tabellenblatt wieder gelöscht.
Aber irgendwie klappt das nicht. er bringt mir Fehler im TextBox..Datum ungültig oder Datum nicht gefunden, obwohl das Datum im Tabellenblatt vorkommt.
ab Zelle A6 soll er mit der Suche beginnen. Das Datum ist in der Spalte B (ab B6)
zu suchen..
Wäre nett, wenn mir jemand helfen könnte.
Gruß MM
Beispiel: 08.10.2015 - 12.10.2015, er soll alle Daten in einer PDF anzeigen die im Bereich 08.10.2015 - 12.10.2015 liegen.
Dim objWs As Worksheet
Dim varRet As Variant, lngStart As Long, lngEnd As Long
Application.ActivePrinter = "PDFCreator auf Ne00:"
With Sheets("Rechnungen")
.Visible = xlSheetVisible
.Copy After:=Sheets(Sheets.Count)
Set objWs = Sheets(Sheets.Count)
.Visible = xlSheetVeryHidden
End With
With objWs
.Unprotect
.Range("A6").CurrentRegion.Sort Key1:=.Range("B6"), Order1:=xlAscending, Header:=xlGuess, OrderCustom:=1, _
MatchCase:=False, Orientation:=xlTopToBottom, DataOption1:=xlSortNormal
If IsDate(TextBox1) Then
If IsDate(TextBox2) Then
varRet = Application.Match(Clng(CDate(TextBox1)), .Columns(3), 0)
If IsNumeric(varRet) Then
lngStart = varRet
varRet = Application.Match(Clng(CDate(TextBox2)), .Columns(3), 1)
If IsNumeric(varRet) Then
lngEnd = varRet
Me.Hide
.PageSetup.PrintArea = CStr("A" & lngStart & ":I" & lngEnd)
'.PrintPreview
.PrintOut Copies:=1, Collate:=True
Unload Me
Else
MsgBox "Eingabe im Datumsfeld >1 End If
Else
MsgBox "Eingabe im Datumsfeld >2 End If
Else
MsgBox "Datum im Datumsfeld >1 End If
Else
MsgBox "Datum im Datumsfeld >2 End If
Application.DisplayAlerts = False
.Delete
Application.DisplayAlerts = True
End With
With Sheets("Schnellstart")
.Visible = True
.Activate
End With
For Each objWs In ThisWorkbook.Worksheets
If Not objWs.Name = "Schnellstart" Then
objWs.Visible = xlVeryHidden
End If
Next

33
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Brauche Hilfe
13.01.2016 20:11:35
Matthias
Hallo! Wo genau entsteht den der Fehler. Bei der Match FUntkion oder schon oben oder erst If IsDate(TextBox1) Then . Die Match Funktion mag manchmal nicht so wie sie soll. Und mit Datumsen ist es manchmal auch verflixt, weil sie nicht richtig erkannt werden. Prüfe mal vor der Matchfunktioin mit einer test = Application.Worksheetfunction.Countif (.Columns(3), Clng(CDate(TextBox1))) - frei aus dem Ärmel geschrieben, ggf. mal anpassen, ob er den Wert überhaupt findet. ISt test 0 findet er nichts und du solltest beim Datum was wandeln bzw. anders suchen. Viele Grüße

AW: Brauche Hilfe
14.01.2016 13:29:10
Michael
Hallo Matthias,
der Fehler kam bei "varRet = Application.Match(Clng(CDate(TextBox1)), .Columns(3), 0)".
habe deinen Code verwendet "Application.Worksheetfunction.Countif (.Columns(3), Clng(CDate(TextBox1)))"
Kein Fehler mehr, allerdings zeigt er nach Eingabe meiner beiden Textboxen, den gesamten Inhalt an und zwar unsortiert...komisch
Beispiel:
Tabelle/Spalte B steht
01.10.2015
08.10.2015
03.11.2015
02.10.2015
genau dieses Ergebnis zeigt er an (So sieht die Tabelle auch unsortiert aus.
Aber ich wollte eigentlich:
1. Tabellenblatt wird unsortiert kopiert.
2. anschließend wird es nach Spalte B (Datum)sortiert
01.10.2015
02.10.2015
08.10.2015
03.11.2015
3. Danach soll er mir das Tabellenblatt nach den Daten in den Textboxen suchen.
3. den gefundene Bereich in (Spalte A -I)in eine Druckvorlage übernehmen
4. das kopierte Tabellenblatt wieder löschen.
Kann es sein, dass er die Sortierung nicht macht.
Gruß MM

Anzeige
AW: Brauche Hilfe
14.01.2016 16:42:55
Matthias
Hallo! Habe nochmal geschaut. Also bei der Sortierung würde ich bei ersten Wert auch B6 setzen und nicht A6. Das mit dem CountIf habe ich mal eingefügt. So sollte es eigentlich laufen. Viele Grüße

Sub neu()
Dim objWs As Worksheet
Dim varRet As Variant, lngStart As Long, lngEnd As Long
Dim temp
Application.ActivePrinter = "PDFCreator auf Ne00:"
With Sheets("Rechnungen")
.Visible = xlSheetVisible
.Copy After:=Sheets(Sheets.Count)
Set objWs = Sheets(Sheets.Count)
.Visible = xlSheetVeryHidden
End With
With objWs
.Unprotect
.Range("B6").CurrentRegion.Sort Key1:=.Range("B6"), Order1:=xlAscending, Header:=xlGuess,  _
OrderCustom:=1, _
MatchCase:=False, Orientation:=xlTopToBottom, DataOption1:=xlSortNormal
If IsDate(TextBox1) Then
If IsDate(TextBox2) Then
temp = Application.WorksheetFunction.CountIf(.Columns(3), CLng(CDate(TextBox1)))
If temp = 0 Then
MsgBox "Das Datum wurde nicht gefunden!"
End
Else
varRet = Application.Match(CLng(CDate(TextBox1)), .Columns(3), 0)
If IsNumeric(varRet) Then
lngStart = varRet
temp = Application.WorksheetFunction.CountIf(.Columns(3), CLng(CDate(TextBox2)))
If temp = 0 Then
MsgBox "Das Datum wurde nicht gefunden!"
End
Else
varRet = Application.Match(CLng(CDate(TextBox2)), .Columns(3), 1)
If IsNumeric(varRet) Then
lngEnd = varRet
Me.Hide
.PageSetup.PrintArea = CStr("A" & lngStart & ":I" & lngEnd)
'.PrintPreview
.PrintOut Copies:=1, Collate:=True
Unload Me
Else
MsgBox "Eingabe im Datumsfeld >1212

Anzeige
AW: Brauche Hilfe
15.01.2016 08:07:18
Michael
ActiveSheet.Unprotect
.Range("A6").CurrentRegion.Sort Key1:=.Range("B6"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, _
MatchCase:=False, Orientation:=xlTopToBottom, DataOption1:=xlSortNormal
So funktioniert die Sortierung mit dem Code auf einmal, allerdings nicht ganz richtg.
Beispiel:
01.10.2015
01.10.2015
02.10.2015
02.10.2014
03.10.2015
03.10.2015
Er haut mir 2014 nicht an den Anfang der Tabelle.
If IsDate(TextBox1) Then
If IsDate(TextBox2) Then
temp = Application.WorksheetFunction.CountIf(.Columns(2), CLng(CDate(TextBox1)))
If temp = 0 Then
MsgBox "Das Datum wurde nicht gefunden!"
End
Else
varRet = Application.Match(CLng(CDate(TextBox1)), .Columns(2), 0)
If IsNumeric(varRet) Then
lngStart = varRet
temp = Application.WorksheetFunction.CountIf(.Columns(2), CLng(CDate(TextBox2)))
If temp = 0 Then
MsgBox "Das Datum wurde nicht gefunden!"
End
Else
varRet = Application.Match(CLng(CDate(TextBox2)), .Columns(2), 1)
If IsNumeric(varRet) Then
lngEnd = varRet
Me.Hide
Dein Code funktionert sehr gut. Nur habe ich bei Colummns die Werte geändert von 3 auf 2.
Weil er mir den Fehler "Datum nicht gefunden" angezeigt hat.
Jetzt sollte noch der gedruckte Bereich funktionieren, aber das klappt auch nicht.
Gibt es eine Möglichkeit, dass er wirklich die Jahre richtig mit sortiert oder ist das generell ein Fehler von Excel?

Anzeige
AW: Brauche Hilfe
15.01.2016 20:48:50
Matthias
Hallo Michael!
Also bei mir haut die Sortierung hin. Sind das auch wirklich Daten oder strings die nur wie ein Datum aussehen? Da müssten wir mal schauen - ein Excel Fehler ist es wohl nicht.
Also der Druckbereich geht auch. Habe ich getestet. Das Problem wird eher sein, dass der bei match deinen Wert nicht findet. Lass dir vor Printarea mal lngStart und lngEnd anzeigen. Da sollten auch werde drin stehen und nicht 0 oder so. Schreibe mal, was er dir da anzeigt.
Gruß

AW: Brauche Hilfe
16.01.2016 07:54:42
Michael
Werde mich am Montag im Büro gleich dranmachen.
Danke vielmals für deine Hilfe

AW: Brauche Hilfe
18.01.2016 07:16:25
Michael
Hallo noch einmal,
hab das noch überprüft und muss sagen..dass es einfach nur perfekt ist. Es funktioniert tadellos. Ich muss irgendwas falsch gemacht haben, aber es passt jetzt perfekt.
Echt klasse, erledigt von Dir.....super....super.....super....vielen lieben Dank...
Wünsche Dir nur das Beste und ein tolles Jahr 2016
Gruß MM
Dim objWs As Worksheet
Dim varRet As Variant, lngStart As Long, lngEnd As Long
Application.ActivePrinter = "PDFCreator auf Ne00:"
With Sheets("Rechnungen")
.Visible = xlSheetVisible
.Copy After:=Sheets(Sheets.Count)
Set objWs = Sheets(Sheets.Count)
.Visible = xlSheetVeryHidden
End With
With objWs
.Unprotect
.Range("A6").CurrentRegion.Sort Key1:=.Range("B6"), Order1:=xlAscending, Header:=xlGuess, OrderCustom:=1, _
MatchCase:=False, Orientation:=xlTopToBottom, DataOption1:=xlSortNormal
If IsDate(TextBox1) Then
If IsDate(TextBox2) Then
varRet = Application.WorksheetFunction.CountIf(.Columns(2), CLng(CDate(TextBox1)))
If IsNumeric(varRet) Then
lngStart = varRet
varRet = Application.WorksheetFunction.CountIf(.Columns(2), CLng(CDate(TextBox2)))
If IsNumeric(varRet) Then
lngEnd = varRet
Me.Hide
'
.PrintOut Copies:=1, Collate:=True
Unload Me
Else
MsgBox "Datum in Textbox2 nicht gefunden!", vbInformation
End If
Else
MsgBox "Datum in Textbox1 nicht gefunden!", vbInformation
End If
Else
MsgBox "Datum in Textbox2 ungültig!", vbInformation
End If
Else
MsgBox "Datum in Textbox1 ungültig!", vbInformation
End If
Application.DisplayAlerts = False
.Delete
Application.DisplayAlerts = True
End With
With Sheets("Schnellstart")
.Visible = True
.Activate
End With
For Each objWs In ThisWorkbook.Worksheets
If Not objWs.Name = "Schnellstart" Then
objWs.Visible = xlVeryHidden
End If
Next

Anzeige
AW: Brauche Hilfe
18.01.2016 09:29:14
Michael
zu früh gefreut....
habe jetzt festgestellt, wenn ich in den beiden Textboxen zum Beispiel
01.10.2015 - 10.11.2015 anzeigen lassen will, er mir folgendes anzeigt 01.10.2015 - 08.10.2015.
Das ist die Suchabfrage die ich als erstes angezeigt haben wollte. Ist da noch irgenwie was im
Speicher? muß ich die Textboxen mit TextBox1 = "" leeren?
Gruß MM

AW: Brauche Hilfe
18.01.2016 13:15:15
Michael
Habe mal die Sortierung geändert, weil er das Jahr nicht richtig sortiert hat. Jetzt sortiert er alles was wie eine Zahl aussieht. Was hälst du davon?
Range("A6:I65535").Select
Selection.Sort Key1:=Range("B6"), Order1:=xlAscending, Header:=xlNo, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortTextAsNumbers
Range("B6").Select

Anzeige
AW: Brauche Hilfe
18.01.2016 15:14:35
Michael
Die Methonde Print Out für das Projekt Worksheet ist fehlgeschlagen.
Jetzt kommt noch dieser Fehler!!! Kann das sein, dass ein Blattschutz den Fehler produziert. Ich habe aber alle entsperrt.
Gruß MM

AW: Brauche Hilfe
18.01.2016 18:30:30
Matthias
Hallo! Also die Sortierung wäre vermtl identisch mit der anderen. Frage aber noch, welchen Code nutzt du denn? In der Nachricht mit dem verfrühten Jubel :-D , hattest du den falschen Code drin. Nur CountIf zählt ja nur die Anzahl, gibt aber nicht die Zeile zurück. Da fehlte dann der match Aufruf zum Finden der Werte. Gruß Matthias

AW: Brauche Hilfe
19.01.2016 07:50:30
Michael
Dim objWs As Worksheet
Dim varRet As Variant, lngStart As Long, lngEnd As Long
Dim temp
Application.ActivePrinter = "PDFCreator auf Ne00:"
With Sheets("Verfügungen")
.Visible = xlSheetVisible
.Copy After:=Sheets(Sheets.Count)
Set objWs = Sheets(Sheets.Count)
.Visible = xlSheetVeryHidden
End With
With objWs
.Unprotect
Range("A6:I65535").Select
Selection.Sort Key1:=Range("B6"), Order1:=xlAscending, Header:=xlNo, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortTextAsNumbers
Range("B6").Select
If IsDate(TextBox1) Then
If IsDate(TextBox2) Then
temp = Application.WorksheetFunction.CountIf(.Columns(2), CLng(CDate(TextBox1)))
If temp = 0 Then
MsgBox "Das Datum wurde nicht gefunden!"
End
Else
varRet = Application.Match(CLng(CDate(TextBox1)), .Columns(2), 0)
If IsNumeric(varRet) Then
lngStart = varRet
temp = Application.WorksheetFunction.CountIf(.Columns(2), CLng(CDate(TextBox2)))
If temp = 0 Then
MsgBox "Das Datum wurde nicht gefunden!"
End
Else
varRet = Application.Match(CLng(CDate(TextBox2)), .Columns(2), 1)
If IsNumeric(varRet) Then
lngEnd = varRet
Me.Hide
.PageSetup.PrintArea = CStr("A" & lngStart & ":I" & lngEnd)
'.PrintPreview
.PrintOut Copies:=1, Collate:=True
Unload Me
Else
MsgBox "Eingabe im Datumsfeld >1 End If
End If
Else
MsgBox "Eingabe im Datumsfeld >2 End If
End If
Else
MsgBox "Datum im Datumsfeld >1 End If
Else
MsgBox "Datum im Datumsfeld >2 End If
Application.DisplayAlerts = False
.Delete
Application.DisplayAlerts = True
End With
With Sheets("Schnellstart")
.Visible = True
.Activate
End With
For Each objWs In ThisWorkbook.Worksheets
If Not objWs.Name = "Schnellstart" Then
objWs.Visible = xlVeryHidden
End If
Next

Anzeige
AW: Brauche Hilfe
19.01.2016 07:53:11
Michael
So sieht mein Code jetzt aus. Aber er findet das Datum nicht, obwohl beide Eingaben vorhanden sind und er haut mir bei der Sortierung immer noch das Jahr durcheinander. Tag und Monat einwandfrei. Gibt es dabei vielleicht Probleme.
Gruß MM

AW: Brauche Hilfe
19.01.2016 16:11:09
Michael
Hallo Matthias,
zur Information. Ich habe die gesamt Spalte B überprüft und das Format ist immer ein Datum. Desweiteren habe ich noch eine Formel eingebaut, die automatisch nach leeren Zeilen sucht und
diese löscht. Somit sollte er also nur Zeilen durchsuchen die in der Spalte B ein Datum haben.
Gruß MM

AW: Brauche Hilfe
19.01.2016 19:58:59
Matthias
Hallo! In Spalte B ist ja in jeder Zelle ein Datum. Wie kommt das dahin? Trägst du es vorher ein oder wird es aus einer Userform etc. reinkopiert und dann sortiert. Falls du es einträgst, darauf achten, dass das Format der Spalte auf Datum steht und du auch einen Datumswert übergibst bspw. Cdate. So wie deine Sortierung aussieht, wird es m.M.n. nicht als Datum interpretiert. (ausführlicher mal hier beschrieben http://www.ms-office-forum.net/forum/showthread.php?t=280086).
Und was findet er bei der Sortierung nicht? Findet Countif nichts oder match? Das könnte auch wieder mit der Art der Daten zusammenhängenn. Wenn du da einen Text hast aber ein DAtum suchst, könnte es fehlschlagen.
Und wenn du das Makro neu startest, sind die alten Werte weg. Also im Speicher ist dann kein andere Wert von vor 5 Minuten mehr drin.
Wie gesagt, prüfen nochmal die Daten und wie sie dorthin kommen. Wenn du deine Date einträgst und die sortierst, klappt es ja.
Gruß

Anzeige
AW: Brauche Hilfe
20.01.2016 07:27:15
Michael
Hallo Matthias,
erst einmal vielen Dank für deine Geduld. Ich werde versuchen, den Ablauf zu erklären und die passenden Makros mitzuschicken.
1. Auf einer Userform mit verschiedenen TextBoxen, werden die Daten in eine Tabelle übergeben. Anschließend produziert er aufgrund einer Formel auf dem Tabellenblatt (Spalte A) eine fortlaufende Nummer/ wird auch über ein CommandButton in einer TextBox angezeigt. Als Kriterium nimmt er hier die Spalte C (verschiedene Rechnungsnummern).
Code auf CommandButton/UserForm1:
Private Sub CommandButton1_Click()
Sheets("Rechnungen").Visible = True
Sheets("Rechnungen").Select
ActiveSheet.Unprotect
Range("C6").Select
Cells(Cells(Rows.Count, "B").End(xlUp).Row + 1, "B").Value = TextBox1
TextBox1 = "" 'leert die textbox
Cells(Cells(Rows.Count, "C").End(xlUp).Row + 1, "C").Value = TextBox2
TextBox2 = "" 'leert die textbox
Cells(Cells(Rows.Count, "E").End(xlUp).Row + 1, "E").Value = TextBox3
TextBox3 = "" 'leert die textbox
Cells(Cells(Rows.Count, "G").End(xlUp).Row + 1, "G").Value = TextBox4
TextBox4 = "" 'leert die textbox
Cells(Cells(Rows.Count, "H").End(xlUp).Row + 1, "H").Value = TextBox5
TextBox5 = "" 'leert die textbox
Dim MaxDatenZeile As Integer, SuchSpalte As Integer
SuchSpalte = 1
MaxDatenZeile = ActiveSheet.Cells(Rows.Count, SuchSpalte).End(xlUp).Row     ' Muster -  _
Datenzeile ermitteln.
MaxDatenZeile = MaxDatenZeile - 1       ' (Minus 1 ist Letzte Leere Dateneingabezeile)
If Range("B" & (MaxDatenZeile)) > "" And Range("B" & (MaxDatenZeile) + 1) = "" Then
On Error Resume Next
MaxDatenZeile = MaxDatenZeile + 1       ' Then von oben ausführen
With Rows((MaxDatenZeile) & ":" & (MaxDatenZeile))      ' Letzte Leere Dateneingabezeile mit  _
Formatierung Auswählen und Kopieren
.Copy             ' Fügt die Kopierte Zeile in das Arbeitsblatt ein und verschiebt  _
die Musterzeile nach unten,
.Insert Shift:=xlDown           ' so paßen sich die Formel Automatisch an.
End With
On Error Resume Next
ActiveSheet.Protect "", DrawingObjects:=True, Contents:=True, Scenarios:=True       '  _
Blattschutz setzen
Else
End If
ActiveSheet.Protect
UserForm2.Show
UserForm1.Hide
End Sub
2. Auf dem nächsten UserForm2 kann ich mittels der produzierten, laufenden Nummer, die Rechnung
wieder einlesen. Angezeigt wird das Ergebnis in einer ListBox. Nach anklicken der Anzeige auf der ListBox,
werden alle Daten in Textboxen wiedergegeben und ermöglichen mir, Änderungen nachträglich vorzunehmen.
Dort habe ich auch die Möglichkeit, das Datum der Bezahlung (Spalte I) einzugeben. Anschließend wird
durch ein CommandButton alles wieder an die Tabelle übergeben.
Code UserForm2/Anzeigen der laufenden Nummer:
Load UserForm2
Sheets("Rechnungen").Visible = True
Dim letzteZeile As Long
letzteZeile = Cells(Rows.Count, 2).End(xlUp).Row
With TextBox1
.Value = Cells(letzteZeile, 1).Value
.SetFocus
.SelStart = 0
.SelLength = Len(.Text)
End With
Sheets("Rechnungen").Visible = False
Code UserForm3 / Übergabe an die Tabelle
Dim manipulierte_Zeile As Integer
With Sheets("Rechnungen")
.Visible = True
.Select
.Unprotect
If TextBox2.Tag = "" Then Exit Sub
manipulierte_Zeile = CLng(TextBox2.Tag)
.Cells(manipulierte_Zeile, 2) = Format(TextBox1, "DD.MM.YYYY")
.Cells(manipulierte_Zeile, 3) = Format(TextBox3.Text)
.Cells(manipulierte_Zeile, 5) = Format(TextBox4.Text)
.Cells(manipulierte_Zeile, 7) = Format(TextBox5.Text)
.Cells(manipulierte_Zeile, 8) = Format(TextBox6.Text)
.Cells(manipulierte_Zeile, 9) = Format(TextBox7, "DD.MM.YYYY")
.Protect
.Visible = False
End With
TextBox2.Tag = ""
Unload Me
With Me.ListBox1
If .ListIndex > -1 Then .RemoveItem (.ListIndex)
End With
UserForm7.Show
UserForm3.Hide
End Sub 3. Eine Sicherung kann ich auch erstellen. Die Makros liegen hierbei auf einem CommandButton. Dort
wird aber nicht nach dem Kriterium Datum (Spalte B) auf dem Tabellenblatt sortiert, sondern nach der
Spalte C (Rechnungsnummer). Das klappt tadellos.
Code für die Sicherung auf dem CommandButton
Sheets("Rechnungen").Visible = True
Sheets("Rechnungen").Select
ActiveSheet.Unprotect
Sheets("Rechnungen").Copy After:=Sheets(5)
Sheets("Rechnungen (2)").Select
Sheets("Rechnungen (2)").Name = "Sicherung der Rechnungen"
ActiveSheet.Range("A6:I65535").Select
Selection.Sort Key1:=ActiveSheet.Range("C6"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
Application.ActivePrinter = "PDFCreator auf Ne00:"
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
Application.DisplayAlerts = False
Sheets(Array("Sicherung der Rechnungen")).Delete
Application.DisplayAlerts = True
ActiveSheet.Protect
Sheets("Schnellstart").Visible = True
Sheets("Schnellstart").Select
ActiveSheet.Protect
Sheets("Rechnungen").Visible = False
UserForm6.Hide
For Each wks In ThisWorkbook.Worksheets
If Not wks.Name = "Schnellstart" Then
wks.Visible = xlVeryHidden
End If
Next wks
End Sub
4. Jetzt will ich natürlich nicht immer eine komplette Sicherung sondern wollte mir die Jahresbezogen
oder Datumsbezogen anzeigen lassen (z.B. 01.01.2015 - 31.12.2015) oder auch ( z.B.10.10.2015 - 31.12.2015). Dies sollte eben über die zwei TextBoxen passieren, indem ich dort das Anfangs und das
Enddatum eintragen kann und er anschließend über ein CommandButton alles sortiert (Spalte B, im Tabellenblatt) und anzeigt. Und das ist eben der Knackpunkt.
Code mit der Sortierung und Anzeige (kennst du ja bereits)
Private Sub CommandButton1_Click()
Dim objWs As Worksheet
Dim varRet As Variant, lngStart As Long, lngEnd As Long
Dim temp
Dim i As Long
Dim zeile As Long
Dim ende As Long
Application.ActivePrinter = "PDFCreator auf Ne00:"
With Sheets("Rechnungen")
.Visible = xlSheetVisible
.Copy After:=Sheets(Sheets.Count)
Set objWs = Sheets(Sheets.Count)
Range("B6").Select
ende = Range("B65536").End(xlUp).Row
Do Until i = ende
If ActiveCell.Value = "" Then
ActiveCell.EntireRow.Delete
Else
ActiveCell.Offset(1, 0).Select
End If
i = i + 1
Loop
.Visible = xlSheetVeryHidden
End With
With objWs
.Unprotect
Range("A6:I65535").Select
Selection.Sort Key1:=Range("B6"), Order1:=xlAscending, Header:=xlNo, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortTextAsNumbers
Range("B6").Select
If IsDate(TextBox1) Then
If IsDate(TextBox2) Then
temp = Application.WorksheetFunction.CountIf(.Columns(3), CLng(CDate(TextBox1)))
If temp = 0 Then
MsgBox "Das Datum wurde nicht gefunden!"
End
Else
varRet = Application.Match(CLng(CDate(TextBox1)), .Columns(3), 0)
If IsNumeric(varRet) Then
lngStart = varRet
temp = Application.WorksheetFunction.CountIf(.Columns(3), CLng(CDate(TextBox2)))
If temp = 0 Then
MsgBox "Das Datum wurde nicht gefunden!"
End
Else
varRet = Application.Match(CLng(CDate(TextBox2)), .Columns(3), 1)
If IsNumeric(varRet) Then
lngEnd = varRet
Me.Hide
.PageSetup.PrintArea = CStr("A" & lngStart & ":I" & lngEnd)
'.PrintPreview
.PrintOut Copies:=1, Collate:=True
Unload Me
Else
MsgBox "Eingabe im Datumsfeld >1212
Habe deinen Link mir angeschaut und das ist wirklich dieselbe Thematik. Aber ich erkenn meinen
Fehler nicht.
Gruß MM

Anzeige
AW: Brauche Hilfe
20.01.2016 11:21:34
Michael
Hallo Matthias,
ich habe noch einmal die Spalte B überprüft und alles in`s richtige Format gebracht und siehe
da, die Sortierung klappt jetzt einwandfrei. Hastest also vollkommen recht mit der Formatierung.
Was micht jetzt stutzig macht, ist das er zwei Datumsangaben nicht findet, obwohl dies vorhanden sind.
Deweiteren, bringt er dann natürlich den Hinweis "Datum nicht gefunden". Allerding öffnet er mir dann das kopierte Tabellenblatt und gerade das soll er nicht. Sondern soll einfach, durch klicken der Meldung, wieder auf der UserForm bleiben, die zwei TextBoxen leeren, damit man von neuem starten kann.
Gruß MM

Anzeige
AW: Brauche Hilfe
20.01.2016 13:55:07
Matthias
Hallo!
Bei der Übergabe der Daten an das Blatt schreibst du bei den Zeiten immer
Cells(manipulierte_Zeile, 9) = Format(TextBox7, "DD.MM.YYYY")
ich würde das ggf. ändern in
Cells(manipulierte_Zeile, 9) = Format(Cdate(TextBox7), "DD.MM.YYYY")
oder auch noch mit einem clng vor dem CDate - so wie im lezten Code für das suchen, in der match Funktion. Damit kommen die Daten auch wirklich als Datum an.
Ich vermute wieder mal, dass es bei der Suche nicht klappt, da ein Wert ein string und kein date ist. Aber wenn du es richtig übergibst, sollte das auch behoben worden sein.
In welchem SUB öffnet er denn das Tabellenblatt trotzdem. Konnte das im Code nicht erkennen. In der SUB2 öffnest du ab und an verschiedene Blätter. Allerdings sehe ich da keine If then Nuztung mit der du bspw. das Sucherergebnis überprüfst und dann den Blatt öffnen Vorgang abschließt.
Viele Grüße

AW: Brauche Hilfe
20.01.2016 14:02:29
Matthias
Habe nochmal geschaut. In dr letzten SUB prüfen wir auf das ergebnis. Dort müsstest du bei der Prüfung, wo dann die Messageboxen erscheinen den Code abbrechen. Ansonsten kommt zwar die Meldung aber dr Code läuft weiter durch. Gruß

AW: Brauche Hilfe
20.01.2016 14:51:36
Michael
If IsDate(TextBox1) Then
If IsDate(TextBox2) Then
temp = Application.WorksheetFunction.CountIf(.Columns(2), CLng(CDate(TextBox1)))
If temp = 0 Then
MsgBox "Das Datum wurde nicht gefunden!"
End
Else
varRet = Application.Match(CLng(CDate(TextBox1)), .Columns(2), 0)
If IsNumeric(varRet) Then
lngStart = varRet
temp = Application.WorksheetFunction.CountIf(.Columns(2), CLng(CDate(TextBox2)))
If temp = 0 Then
MsgBox "Das Datum wurde nicht gefunden!"
End
Meinst du diesen Code? Ich dachte, da reicht ein "End" aus?

AW: Brauche Hilfe
20.01.2016 20:36:53
Matthias
Ne. Da wird der Code ja beendet. Irgendwo prüfst du ja, die Messagebox kommt und der Code läuft trotzdem weiter und öffnet eine Seite. Die Stelle konnte ich bei dir nicht finden. Da müsste irgendwo eine Prüfung erfolgen und dann abbrechen. Da der Fehler nur einer UF auftritt, würde ich die mal Zeilenweise durchgehen und schauen. Da müssten wir was einbauen. Gruß

AW: Brauche Hilfe
21.01.2016 07:29:44
Michael
Hallo Matthias,
ich habe mir die kopierte Tabelle noch einmal angeschaut und folgendes festgestellt.
Es waren 2 Zellen in Spalte B (Datum) die ein falsches Datum hatten, obwohl im Originaltabellenblatt
das Datum richtig vorhanden ist. Vermutlich hat er deswegen "das Datum nicht gefunden". Habe diese beiden
Zellen jetzt mal manuel formatiert in "benutzerdefiniert" TT.MM.JJJJ. Vorher waren alle folgendermaßen formatiert "Datum/*14.03.2015 (Beispiel). Was mich immer noch stutzig macht ist, dass er beim Testlauf
24.06.2015 - 17.09.2015 findet, aber 26.06.2015 - 17.09.2015 wieder nicht, obwohl es vorhanden und alles richtig formatiert ist. Ich werd noch zum Hirsch.
Das mit dem Code check ich mal durch. Bin mir aber echt nicht bewußt wo der liegt.
im objWs As Worksheet
Dim varRet As Variant, lngStart As Long, lngEnd As Long
Dim temp
Dim i As Long
Dim zeile As Long
Dim ende As Long
Application.ActivePrinter = "PDFCreator auf Ne00:"
With Sheets("Verfügungen")
.Visible = xlSheetVisible
.Copy After:=Sheets(Sheets.Count)
Set objWs = Sheets(Sheets.Count)
Range("B6").Select
ende = Range("B65536").End(xlUp).Row
Do Until i = ende
If ActiveCell.Value = "" Then
ActiveCell.EntireRow.Delete
Else
ActiveCell.Offset(1, 0).Select
End If
i = i + 1
Loop
.Visible = xlSheetVeryHidden
End With
With objWs
.Unprotect
Range("A6:I65535").Select
Selection.Sort Key1:=Range("B6"), Order1:=xlAscending, Header:=xlNo, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
Range("B6").Select
If IsDate(TextBox1) Then
If IsDate(TextBox2) Then
temp = Application.WorksheetFunction.CountIf(.Columns(2), CLng(CDate(TextBox1)))
If temp = 0 Then
MsgBox "Das Datum wurde nicht gefunden!"
End
Else
varRet = Application.Match(CLng(CDate(TextBox1)), .Columns(2), 0)
If IsNumeric(varRet) Then
lngStart = varRet
temp = Application.WorksheetFunction.CountIf(.Columns(2), CLng(CDate(TextBox2)))
If temp = 0 Then
MsgBox "Das Datum wurde nicht gefunden!"
End
Else
varRet = Application.Match(CLng(CDate(TextBox2)), .Columns(2), 1)
If IsNumeric(varRet) Then
lngEnd = varRet
Me.Hide
.PageSetup.PrintArea = CStr("A" & lngStart & ":I" & lngEnd)
'.PrintPreview
.PrintOut Copies:=1, Collate:=True
Unload Me
Else
MsgBox "Eingabe im Datumsfeld >1 End If
End If
Else
MsgBox "Eingabe im Datumsfeld >2 End If
End If
Else
MsgBox "Datum im Datumsfeld >1 End If
Else
MsgBox "Datum im Datumsfeld >2 End If
Application.DisplayAlerts = False
.Delete
Application.DisplayAlerts = True
End With
With Sheets("Schnellstart")
.Visible = True
.Activate
End With
For Each objWs In ThisWorkbook.Worksheets
If Not objWs.Name = "Schnellstart" Then
objWs.Visible = xlVeryHidden
End If
Next
Das ist noch mal das ganze Makro.

AW: Brauche Hilfe
21.01.2016 12:46:25
Matthias
Hallo! Wie gesagt bei dem Match iVm Daten gibt es immer ein paar Probleme, da das Format identisch sein sollte. Entweder ist beim Eintragen der Daten was falsch gelaufen oder bei der Suche. Die Daten in der Spalte, wo du suchst, werden die mit Hand oder automatisch eingetragen? Falls automatisch, dann dort mal schauen, ob das Datum richtig übergeben /eingetragen wird. Und bei deinem Beispiel, da wird der 26.06.2015 nicht gefunden oder das andere Datum (was er vorher ja angezeigt hat)? Die Sortierung haut aber hin oder wird das Datum auch falsch sortiert.
Du hattest letztens mal geschrieben:
Deweiteren, bringt er dann natürlich den Hinweis "Datum nicht gefunden". Allerding öffnet er mir dann das kopierte Tabellenblatt und gerade das soll er nicht. Sondern soll einfach, durch klicken der Meldung, wieder auf der UserForm bleiben, die zwei TextBoxen leeren, damit man von neuem starten kann.
Da meinte ich, dass ich nicht genau weiß, wo das im Code auftritt. Im COde oben sollte er ja beim Nichtfinden über die Zeile mit end den Code beenden. Oder meinst du da was anderes mit?
Viele Grüße

AW: Brauche Hilfe
21.01.2016 15:02:12
Michael
Hallo Matthias,
also das erste Mal wird das Datum über eine TextBox/UserForm an die Tabelle übergeben.
Cells(Cells(Rows.Count, "B").End(xlUp).Row + 1, "B").Value = TextBox1
das zweite Mal wird das Datum per TextBox (fortlaufende Nr.) wieder in einer anderen
TextBox angezeigt und kann ggfs. geändert werden.
Übergeben wird es an die Tabelle folgendermaßen:
.Cells(manipulierte_Zeile, 2) = Format(CDate(TextBox1), "DD.MM.YYYY").
Die Sortierung haut einwandfrei hin...dank dir...
Das mit dem Tabellenblatt anzeigen, ist so, dass ich diesen Code nirgends habe. Ich denke,
dass er sobald er den Hinweis "Datum nicht gefunden" per MsgBox anzeigt, er das Makro stoppt. Er
kopiert ja noch das Originaltabellenblatt und sortiert und löscht einwandfrei die leeren Zeilen auf dem kopierten Tabellenblatt.
Das ist der einzige Bereich, wo es vermutlich hakt liegt irgendwo hier.
Private Sub CommandButton3_Click()
Dim objWs As Worksheet
Dim varRet As Variant, lngStart As Long, lngEnd As Long
Dim temp
Dim i As Long
Dim zeile As Long
Dim ende As Long
Application.ActivePrinter = "PDFCreator auf Ne00:"
With Sheets("Rechnungen")
.Visible = xlSheetVisible
.Copy After:=Sheets(Sheets.Count)
Set objWs = Sheets(Sheets.Count)
Range("B6").Select
ende = Range("B65536").End(xlUp).Row
Do Until i = ende
If ActiveCell.Value = "" Then
ActiveCell.EntireRow.Delete
Else
ActiveCell.Offset(1, 0).Select
End If
i = i + 1
Loop
.Visible = xlSheetVeryHidden
End With
With objWs
.Unprotect
Range("A6:I65535").Select
Selection.Sort Key1:=Range("B6"), Order1:=xlAscending, Header:=xlNo, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
Range("B6").Select
If IsDate(TextBox1) Then
If IsDate(TextBox2) Then
temp = Application.WorksheetFunction.CountIf(.Columns(2), CLng(CDate(TextBox1)))
If temp = 0 Then
MsgBox "Das Datum wurde nicht gefunden!"
End
Else
varRet = Application.Match(CLng(CDate(TextBox1)), .Columns(2), 0)
If IsNumeric(varRet) Then
lngStart = varRet
temp = Application.WorksheetFunction.CountIf(.Columns(2), CLng(CDate(TextBox2)))
If temp = 0 Then
MsgBox "Das Datum wurde nicht gefunden!"
End
Bis dahin, gehe ich aus, läuft das Makro immer. Aber wenn er das Datum nicht findet,taucht dann das kopierte Tabellenblatt auf und stoppt das Makro (siehe oben). Wenn er
die Daten findet, geht er gleich weiter mit diesem Code:
Else
varRet = Application.Match(CLng(CDate(TextBox2)), .Columns(2), 1)
If IsNumeric(varRet) Then
lngEnd = varRet
Me.Hide
.PageSetup.PrintArea = CStr("A" & lngStart & ":I" & lngEnd)
'.PrintPreview
.PrintOut Copies:=1, Collate:=True
Unload Me
Application.DisplayAlerts = False
.Delete
Application.DisplayAlerts = True
End With
With Sheets("Schnellstart")
.Visible = True
.Activate
End With
For Each objWs In ThisWorkbook.Worksheets
If Not objWs.Name = "Schnellstart" Then
objWs.Visible = xlVeryHidden
End If
Next
Gruß MM

AW: Brauche Hilfe
21.01.2016 16:21:07
Michael
Also jetzt wird es echt verrückt. Halt dich fest....
Ich habe alles noch einmal durchprobiert und mußte folgendes feststellen. Nach dem er die
Originaltabelle kopiert und sortiert hat und er den Hinweis "kein Datum gefunden" gebracht hat. Geht
ja immer das kopierte Tabellenblatt auf. Auf dem letzten Eintrag beim Datum verhaut er mir das Datum.
anstatt 25.09.2015 immer 25.90.2015 deswegen stoppt er und der letzte Eintrag wurde dewegen auch nicht
richtig sortiert. Ich habe dann mal den Eintrag entfernt und dann ging es einmal. Und was jetzt....jetzt ist wieder der letze Eintrag vom Datum falsch.
Obwohl in der Originaltabelle das Datum richt erfasst ist. Jetzt hab ich echt keine Ahnung, da muss doch was an der Sortierung (Makro) nicht stimmen, oder? Warum verändert er mir das Datum, obwohl die Formate alle richtig sind. Puuhhhhh....jetzt steh ich echt auf dem Schlauch...
Ich bin mir sicher, dass hier der Hund vielleicht begraben liegt. Komisch ist eben nur, dass er mir ständig den letzten Eintrag verhaut. Ich muß dazusagen, dass ich 2 leere Zeilen am Ende habe. die Letzte dient als Musterzeile, die kopiert wird, sobald die zweite letzte Zeile mit einem Eintrag befüllt wird... aber daran kann es nicht liegen...

AW: Brauche Hilfe
23.01.2016 19:34:28
Matthias
Hallo!
ALso das mit dem Blatt ist klar. Wenn das Blatt eingefügt wird, ist dies das aktuelle Blatt. Wenn der Code dann beendet wird (durch die Codezeile end) weil er nichts findet, siehst du da aktuelle Blatt . Dies ist das eingefügte. Erst später im Code aktivierst du ja ein anderes.
Kannst du mal deinen Code Schrittweise durchgehen und schauen, wie das Datum dahin kommt. Evtl. wieder mit clng bzw. cdate vorher in die richtige Form bringen. Wird das Datum ggf. mit verschiedenen Funktionen wir Monat Jahr etc. zusammengesetzt. Dann könnte da was falsch laufen. Oder war das Datum nur falsch in der Userform eingetragen? Dort würde ich auch mit clng / cdate arbeiten.
Cells(Cells(Rows.Count, "B").End(xlUp).Row + 1, "B").Value = TextBox1
Im Zweifel würde ich vor dem Eitragen mit IsDate abfragen, ob es wirklich ein Datum ist. ANsonsten die Abfrage nochmal wiederholen lassen.
Viele Grüße

AW: Brauche Hilfe
25.01.2016 09:10:11
Michael
Hallo Matthias,
danke für deine Tipps. Werde mich gleich ranmachen. Ich habe zur Sicherheit noch in den betreffenden Texboxen eine kleine Sicherung eingebaut.
On Error GoTo Fehler
If Mid(TextBox1, 3, 1) = "." And _
Mid(TextBox1, 6, 1) = "." Then
Exit Sub
End If
Fehler:
MsgBox "Bitte Datum wie folgt eingeben.z.B. 01.01.2015"
TextBox1 = ""
Jetzt muss es auf jeden Fall richtig eingeben werden.

AW: Brauche Hilfe
25.01.2016 09:14:38
Michael
manipulierte_Zeile = CLng(TextBox2.Tag)
.Cells(manipulierte_Zeile, 2) = Format(TextBox1, "DD.MM.YYYY")
.Cells(manipulierte_Zeile, 3) = Format(TextBox3.Text)
.Cells(manipulierte_Zeile, 5) = Format(TextBox4.Text)
.Cells(manipulierte_Zeile, 7) = Format(TextBox5.Text)
.Cells(manipulierte_Zeile, 8) = Format(TextBox6.Text)
.Cells(manipulierte_Zeile, 9) = Format(TextBox7, "DD.MM.YYYY")
Hier habe ich mal Clng vorgeben. Das heißt, dass ich bei der UserForm/TextBox in dem noch einmal Einträge/Änderungen vorgenommen werden können, das Makro in das entsprechende Format "DD:MM:YYYY. übergibt.

AW: Brauche Hilfe
25.01.2016 12:52:46
Michael
Hallo Matthias,
ich habe jetzt das mit dem Cdate eingebaut. Ist das so korrekt. Zumindestens
bringt er in der TextBox keinen Fehler mehr. Ach übrigens wird das Datum komplett in
eine Zelle übergeben. Es wird also nirgends zusammengefügt.
Gruß MM
Code in der TextBox
-----------------------
On Error GoTo Fehler
If Mid(TextBox1, 3, 1) = "." And _
Mid(TextBox1, 6, 1) = "." Then
Exit Sub
End If
Fehler:
MsgBox "Bitte Datum wie folgt eingeben.z.B. 01.01.2015"
TextBox1 = ""
If IsDate(TextBox1.Text) Then
ActiveCell.Offset(0, 1) = CDate(TextBox1.Text)
End If
------------------------------------------------------
Den Rest prüfe ich noch...

AW: Brauche Hilfe
25.01.2016 20:41:26
Matthias
Hallo! Das sollte passen. Ggf. kannst du es auch so machen.
ActiveCell.Offset(0, 1) = Clng(CDate(TextBox1.Text))
Dann sollte es eigentlich auf alle Fälle ein Datum sein.
WEnn du das Datum nicht zusammensetzt, kann ich mir das mit .90. nicht erklären. Außer, wie gesagt man hat sich verschrieben.
Schönen Abend noch

AW: Brauche Hilfe
26.01.2016 12:18:11
Michael
Hallo Matthias,
jetzt etwas ganz, ganz komisches. Ich hab doch mal geschrieben, dass er mir bei einem das Datum verhagelt und zwar in der kopierten Tabelle.
Ich habe nun den Eintrag im Originaltabellenblatt komplett gelöscht und alle anderen Einträge überprüft, ob dieser Datensatz noch irgendwo auftaucht. Alles negativ.
Jetzt starte ich das Makro mit dem Druckzeitraum und der Sortierung und siehe da. der Eintrag taucht im kopierten Tabellenblatt mit dem Fehler wieder auf.
Das gibt`s doch nicht, der war doch tatsächlich gelöscht. Wie kann der aus dem nichts wieder auftauchen?
Eine Idee?
Sonst läuft alles sauber
Gruß MM

AW: Brauche Hilfe
26.01.2016 14:24:17
Michael
Hallo Matthias,
du hattest mal wieder recht. Es war von den 1200 Zeilen, doch noch ein Datum falsch geschrieben
(25.90.2015). Desweiteren habe ich auch festgestellt, dass in einer anderen Zeile, dass Datum richtig gerschrieben wurde, allerding am Ende der Sortierung gelandet ist. Habe einfach das Datum von einer anderen Zelle übernommen, anschließend korrigert und siehe da, es funktioniert. Wahrscheinlich war das irgenwie als Text abgelegt.
Jetzt gibt es ja nur noch das Problem, dass ich eigentlich möchte, dass er, wenn er das Datum nicht findet die beiden TextBoxen leert (TextBox = "") und er auf dem gleichem UserForm bleibt, ohne das er das kopierte Tabellenblatt öffnet. Also eigentlich soll er ja das Tabelleblatt sofort wieder löschen und die Abfrage soll dann neu gestartet werden oder geht das durch eine Schleife/Loop?
Idee?
Gruß MM

AW: Brauche Hilfe
26.01.2016 14:41:19
Michael
Hallo Matthias,
jetzt hab ich`s hinbekommen. Es funktioniert genau wie ich will. Findet er ein Datum nicht, wird die entsprechende TextBox geleert und ich weiß, dass dieses Datum nicht vorhanden ist. So kann ich das Datum suchen, dass wirklich auch irgendwo hinterlegt ist. Das kopierte Tabellenblatt wird auch gelöscht, so wie ich will....
Super, Super....warst mir ne echt große Hilfe....vorallem habe ich enorm dazugelernt. Hut ab...
Danke....Danke.....Danke.....Danke....
Der Thread kann nun endlich geschlossen werden.. Hier mein Code der so funktioniert.
Gruß MM
Dim objWs As Worksheet
Dim varRet As Variant, lngStart As Long, lngEnd As Long
Dim temp
Dim i As Long
Dim zeile As Long
Dim ende As Long
Application.ActivePrinter = "PDFCreator auf Ne00:"
With Sheets("Verfügungen")
.Visible = xlSheetVisible
.Copy After:=Sheets(Sheets.Count)
Set objWs = Sheets(Sheets.Count)
Range("B6").Select
With objWs
.Unprotect
Range("A6:I65535").Select
Selection.Sort Key1:=Range("B6"), Order1:=xlAscending, Header:=xlNo, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortTextAsNumbers
Range("B6").Select
If IsDate(TextBox1) Then
If IsDate(TextBox2) Then
temp = Application.WorksheetFunction.CountIf(.Columns(2), CLng(CDate(TextBox1)))
If temp = 0 Then
MsgBox "Das Datum wurde nicht gefunden!"
TextBox1 = ""
Application.DisplayAlerts = False
.Delete
UserForm8.Hide
UserForm8.Show
End
Else
varRet = Application.Match(CLng(CDate(TextBox1)), .Columns(2), 0)
If IsNumeric(varRet) Then
lngStart = varRet
temp = Application.WorksheetFunction.CountIf(.Columns(2), CLng(CDate(TextBox2)))
If temp = 0 Then
MsgBox "Das Datum wurde nicht gefunden!"
TextBox2 = ""
Application.DisplayAlerts = False
.Delete
UserForm8.Hide
UserForm8.Show
End
Else
varRet = Application.Match(CLng(CDate(TextBox2)), .Columns(2), 1)
If IsNumeric(varRet) Then
lngEnd = varRet
Me.Hide
.PageSetup.PrintArea = CStr("A" & lngStart & ":I" & lngEnd)
'.PrintPreview
.PrintOut Copies:=1, Collate:=True
Unload Me
Else
MsgBox "Eingabe im Datumsfeld >1 End If
End If
Else
MsgBox "Eingabe im Datumsfeld >2 End If
End If
Else
MsgBox "Datum im Datumsfeld >1 End If
Else
MsgBox "Datum im Datumsfeld >2 End If
Application.DisplayAlerts = False
.Delete
Application.DisplayAlerts = True
End With
With Sheets("Schnellstart")
.Visible = True
.Activate
End With
For Each objWs In ThisWorkbook.Worksheets
If Not objWs.Name = "Schnellstart" Then
objWs.Visible = xlVeryHidden
End If
Next
End With

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige