Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1464to1468
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

Druckzeitraum auswählen

Druckzeitraum auswählen
04.01.2016 15:43:27
Michael
Hallo Zusammen,
ich habe ein kleines Problem und hoffe ihr könnt mir helfen.
Ich habe ein Tabellenblatt, dass mittlerweile ziemlich lang ist.
Nun möchte ich mittels 2er Textboxen den Ausdruck erzeugen.
Z.B. 01.01.2015 = TextBox1 bis 31.12.2015 = TextBox2
Das VBA soll dann in einer bestimmten Spalte (ab A6) nach dem ersten Datum suchen
und bis zum zweiten Datum suchen und anschließend diesen Bereich ( Axx - Ixx )drucken.
Es hätte für mich den Vorteil, dass ich nicht immer die ganze Tabelle ausdrucken müsste.
Gruß an alle und ein guten neues Jahr
M. Moore

27
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Druckzeitraum auswählen
04.01.2016 15:53:00
Sepp
Hallo Michael,
Textbox wo? Auf der Tabelle auf einem UF? Tabellenname?
Gruß Sepp

AW: Druckzeitraum auswählen
04.01.2016 17:12:04
M.
Hallo Sepp,
hab ich in der Eile vergessen. Ich möchte es auf einem Userform einbinden, auf dem die zwei Textboxen liegen. Der Tabellenname ist Rechnungen.
Danke schon mal
Gruss Marc

AW: Druckzeitraum auswählen
05.01.2016 08:38:26
Sepp
Hallo Michael, oder Marc?
Der Code für den Commandbutton.
Private Sub CommandButton1_Click()
Dim varRet As Variant, lngStart As Long, lngEnd As Long

With Sheets("Rechnungen")
  If IsDate(TextBox1) Then
    If IsDate(TextBox2) Then
      varRet = Application.Match(Clng(CDate(TextBox1)), .Columns(1), 0)
      If IsNumeric(varRet) Then
        lngStart = varRet
        varRet = Application.Match(Clng(CDate(TextBox2)), .Columns(1), 0)
        If IsNumeric(varRet) Then
          lngEnd = varRet
          Me.Hide
          .PageSetup.PrintArea = CStr("A" & lngStart & ":I" & lngEnd)
          .PrintPreview 'zum Testen!
          '.PrintOut 'zum Drucken!
          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
End With

End Sub

Gruß Sepp

Anzeige
AW: Druckzeitraum auswählen
04.01.2016 17:57:40
Michael
Hallo Michael,
nachdem Sepp anscheinend nicht mehr am Platz ist, habe ich mir die Frage angesehen.
Warum muß eigentlich immer alles in einer UF sein?
Ich habe eine Beispieldatei mit Eingabe für von .. bis außerhalb des zu druckenden Bereichs angelegt, den Druckbereich direkt im Blatt mit ein paar Formeln ermittelt und lese diesen nur in VBA ein: https://www.herber.de/bbs/user/102577.xls
PrintArea ist nur ein String, der die Adresse des zu druckenden Ranges enthält.
Den markiert das Makro zur Veranschaulichung in gelb:
Option Explicit
Sub druckbereich()
Dim sh As Worksheet
Set sh = Sheets("Rechnungen")
sh.PageSetup.PrintArea = sh.Range("L4").Value
' Das war's auch schon
' Nur zur Verdeutlichung:
sh.Range(sh.PageSetup.PrintArea).Interior.Color = vbYellow
End Sub
Der Punkt ist, daß für gewöhnlich keine Rechnung mit dem Datum 1.1. existiert; damit ist VBAs Suche mit .find hakelig. Im Tabellenblatt habe ich VERGLEICH verwendet, das tut brav.
Happy Exceling,
Michael

Anzeige
AW: Druckzeitraum auswählen
05.01.2016 06:59:01
Michael
Vielen Dank für deine schnelle Antwort...
der Punkt, warum ich es auf einem UserForm ablegen möchte ist, dass 1. mehrere Kollegen auf die
die Datei zugreifen und ich nicht will, dass Sie dabei auf die Tabelle zugreifen können. Ich habe dort
bereits mehrere Formeln eingebaut, wi z.B. fortlaufende Nummer erzeugen, weitere leere Zeile erzeugen etc. durch das anklicken einer Zelle verbaut es mir evtl. sonst die Formeln. 2. sieht es natürlich auch optisch ansprechender aus, wenn Sie nur durch einsetzen eines Datums und anklicken des Druck Buttons, den Ausdruck erzeugen können.
Das mit dem "Vergleich" ist mit Sicherheit nicht unberechtigt und ist ganz klar auch eine Option...
doch bevorzuge ich die UserForm, vorallem für meine Kollegen..
Danke Dir

Anzeige
AW: Druckzeitraum auswählen
05.01.2016 08:21:15
Michael
Hallo Noch einmal,
ich habe deinen Code einmal ausprobiert und er druckt mir falsche Werte aus. z.B. gebe ich den 31.08.2015 - 31.10.2015 ein.
Er fängt beim Anfangsdatum an hört aber beim 08.10.2015 auf, obwohl der Zeitraum bis 31.10.2015 mehrfach vorkommt.
Eine Idee was ich falsch mache?

AW: Druckzeitraum auswählen
05.01.2016 10:56:50
Michael
Hallo Sepp,
Marc Michael Moore ist richtig. Passt schon....Dein Code bringt mir ein Fehler und zwar wenn ich in der TextBox1 "31.10.2015" zum Beispiel eintrage, bringt er mir deine "MsgBox" Datum ungültig.
varRet = Application.Match(CLng(CDate(TextBox1)), .Columns(1), 0), muss das abgeänderrt werden in z.B. dd.mm.yyyy ?
Ansonsten ist das genau, wie ich es mir erhoffe...
Vielen Dank, dass du dich meinem Problem annimmst

Anzeige
AW: Druckzeitraum auswählen
05.01.2016 12:05:01
Sepp
Hallo Michael,
also bei mir funktioniert der Code tadellos. Ohne deine Datei zu sehen, ist es schwer zu sagen, was falsch läuft.
Gruß Sepp

AW: Druckzeitraum auswählen
05.01.2016 13:11:28
Michael
Hallo Sepp, so habe ich es versucht mit Einbau deines Codes.
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 Rechnugen"
ActiveSheet.Range("A6:I65535").Select
Selection.Sort Key1:=ActiveSheet.Range("C6"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
Application.DisplayAlerts = False
Dim varRet As Variant, lngStart As Long, lngEnd As Long
With Sheets("Rechnungen")
If IsDate(TextBox1) Then
If IsDate(TextBox2) Then
varRet = Application.Match(CLng(CDate(TextBox1)), .Columns(1), 0)
If IsNumeric(varRet) Then
lngStart = varRet
varRet = Application.Match(CLng(CDate(TextBox2)), .Columns(1), 0)
If IsNumeric(varRet) Then
lngEnd = varRet
Me.Hide
.PageSetup.PrintArea = CStr("A" & lngStart & ":I" & lngEnd)
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
End With
Application.ActivePrinter = "PDFCreator auf Ne00:"
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
Sheets(Array("Sicherung der Rechnungen")).Delete
Application.DisplayAlerts = True
ActiveSheet.Protect
Sheets("Schnellstart").Visible = True
Sheets("Schnellstart").Select
ActiveSheet.Protect
Sheets("Rechnungen").Visible = False
For Each wks In ThisWorkbook.Worksheets
If Not wks.Name = "Schnellstart" Then
wks.Visible = xlVeryHidden
End If
Next wks
So sieht mein Code aus. Zur Verdeutlichung:
In Spalte A wird eine fortlaufende Nummer generiert. in Spalte B steht das Datum der Rechnungsaustellung. In Spalte I steht das Datum der Rechnungszahlung. Nun habe ich VBA so geschrieben, dass er mit das Tabellenblatt Rechnungen kopiert, sortiert und dann soll er das Suchkriterium (TextBox 1 und 1) nehmen und mir diesen Bereich als PDF-File anzeigen, damit ich es evtl. speichern oder ausdrucken kann. Anschließend löscht er mir das kopierte Tabellenblatt "Sicherung der Rechnungen" wieder. Ich habe das Tabellenblatt kopieren lassen, da die Spalte B nicht sortiert nach Datum ist. Es funktioniert auch, zumindestens zeigt er kein Fehler an, allerding zeigt er mir nicht den Bereich des Suchkriteriums an, sondern ein anderen Datumsbereich.
Kannst du damit was anfangen?

Anzeige
AW: Druckzeitraum auswählen
05.01.2016 13:15:46
Sepp
Hallo Michael,
ist ja gruselig;-))
Bitte zeig den gesamten Code, also von Private Sub.. bis End Sub.
Gruß Sepp

AW: Druckzeitraum auswählen
05.01.2016 13:49:22
Michael
Hallo Sepp,
das ist der gesamte Code, außer dass oben "

Private Sub CommandButton1_Click()" steht und unten "End Sub
"
Gruß MM

AW: Druckzeitraum auswählen
05.01.2016 14:13:08
Sepp
Hallo Michael,
nach deinem Sortier-Code vermute ich, dass das Datum in Spalte C steht!
Private Sub CommandButton1_Click()
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("C6"), 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), 0)
        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 "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

End Sub


Gruß Sepp

Anzeige
AW: Druckzeitraum auswählen
05.01.2016 15:42:47
Michael
varRet = Application.Match(Clng(CDate(TextBox1)), .Columns(3), 0). liege ich hier richtig, dass du die 3. Spalte damit ansprichst (Columns (3)?

AW: Druckzeitraum auswählen
05.01.2016 15:46:52
Michael
Unprotect
.Range("A6").CurrentRegion.Sort Key1:=.Range("C6"), Order1:=xlAscending, Header:=xlGuess, OrderCustom:=1, _
MatchCase:=False, Orientation:=xlTopToBottom, DataOption1:=xlSortNormal
hier bringt er mir einen Fehler. Weiß gar nicht warum? Range A6 heißt er fängt in dieser Zelle an.
Range C6 heißt hier wird mit der Sortierung angefangen, richtig?
Der Rest ist ja schon mal genial. Ich muß noch sehr viel lernen...

Anzeige
AW: Druckzeitraum auswählen
05.01.2016 15:55:38
Michael
Die Sortier-Methode des Range Objektes kann nicht durchgeführt werden.
Fehlerbeschreibung

AW: Druckzeitraum auswählen
05.01.2016 16:06:54
Michael
Fahre jetzt heim. Ich werde mich heute abend oder am Donnerstag melden. Morgen wird es nichts, da mein Frau Geburtstag hat. Bitte macht weiter so.....seit super.....Gruß MM

AW: Druckzeitraum auswählen
05.01.2016 16:32:52
Sepp
Hallo Michael,
am besten wäre es, wenn du ene Beispieldatei hochladen würdest, dann kann ich gleich erkennen, wo der Fehler liegt.
Gruß Sepp

liegt es daran ?
05.01.2016 16:42:29
robert
Hallo Sepp,
ist es das ?
varRet = Application.Match(Clng(CDate(TextBox2)), .Columns(3), 0)
ersetze in dieser Codezeile die Null durch 1
also
varRet = Application.Match(Clng(CDate(TextBox2)), .Columns(3), 1)
Gruß
robert

Anzeige
AW: liegt es daran ?
05.01.2016 16:53:20
Sepp
Hallo Robert,
ich beziehe mich jetzt zuerst auf den Fehler bei .Sort.
Gruß Sepp

AW: liegt es daran ?
07.01.2016 08:27:06
Michael
Hab jetzt ne stark eingeschränkte Datei hochgeladen, wegen der 300 kb Beschränkung. Noch einmal zur Information. Da das Rechnungsaustellungsdatum durcheinander erfolgt, wird das Tabellenblatt im Hintergrund kopiert, anschließend soll es nach dem Rechungstellungdatum sortiert werden. Dann kann mittels der TextBox 1 und 2 der Druckzeitraum ausgelöst werden. Er soll dann nur den Bereich ab A6 bis I
in dem das Datum vorkommt drucken.
Das mit dem Datum nicht gefunden von Dir Sepp ist auch super, so weiß ich gleich, dass es da keine Rechnung gab.
Hoffe es hilft euch weiter...
Grüße von MM

Anzeige
AW: liegt es daran ?
07.01.2016 17:30:29
Sepp
Hallo Micheal,
ein paar Anmerkungen zu deiner Datei.

  • Mag ich es gar nicht, wenn eine Datei meine Einstellungen verkorkst und beim Beenden nicht wieder herstellt

  • Ich mag es auch nicht, wenn jemand eine, bis auf Überschriften und Zellrahmen, leer Datei hoch lädt


Gruß Sepp

PS: Abeitest du in einem Blindenheim?

AW: liegt es daran ?
08.01.2016 05:51:38
Michael
Hallo Sepp,
Sorry, dass du Ärger mit meiner Datei hast. Aber beim starten der Datei ist es richtig,wie du geschrieben hast, dass die DATEI bestimmte Dinge ausblendet. Beim speichern der Datei sollte alles, so ist bei mir, wieder in den Normalmodus zurückgesetzt werden. Wenn du auf den Button Bearbeitungsmodus klickst und das Passwort Rechnung eingibst, entsperrt er alles und gibt alles wieder frei. Dort ist auch die TABELLE Rechnungen mit zwei Eintragungen von mir. Die Tabelle DRUCKVORLAGE ist leer, weil ich diese verwende, um die Tabelle Rechnungen mittels listbox und Textboxen zu durchsuchen und anschliessend durch einen Druckbutton in das Tabellenblatt Druchvorlage zu übernehmen.
Es ist und war nicht meine ABSICHT, User wie dich und andere zu verärgern....vorallem, weil ihr sehr gut Arbeit leistet. Wirklich ernst gemeintes sorry.
Wie gesagt, musste ich die Datei stark reduzieren, um auf die 300 kb einzuhalten.
Gruss MM

AW: Druckzeitraum auswählen
07.01.2016 12:00:55
Michael
Hallo Sepp,
habe jetzt ne Datei hochgeladen
Gruß MM

AW: Druckzeitraum auswählen
05.01.2016 15:56:19
Michael
Hi Michael,
das kann ich ohne Deine Daten nicht nachvollziehen.
Schöne Grüße,
Michael

AW: Druckzeitraum auswählen
05.01.2016 16:11:05
robert
varRet = Application.Match(Clng(CDate(TextBox2)), .Columns(3), 0)
ersetze in dieser Codezeile die Null durch 1
also
varRet = Application.Match(Clng(CDate(TextBox2)), .Columns(3), 1)
Gruß
robert

AW: Druckzeitraum auswählen
07.01.2016 12:00:15
Michael
habe ne Datei hochgeladen

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige