Clever-Excel-Forum

Normale Version: VBA - Druckoptionen
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo zusammen,

ich bin mit meinen rudimentären VBA-Kenntnissen leider an meine Grenze gestoßen und benötige Eure Hilfe:
(Da das zusammenbasteln verschiedener im Internet gefundenen Code-Schnipsel nicht funktionierte, lass ich sie jetzt einfach weg)


In beigefügte Tabelle (nur Skizzenhaft erstellt und auch noch nicht als xlsm abgespeichert) möchte ich folgendes tun:

Ich möchte für jedes Jahr einen Ausdruck per VBA generieren. Dieser Ausdruck (Din A4 hochkant) soll folgende Bedingungen erfüllen:

1) Der Ausdruck soll im Hochformat erfolgen
2) Der Druckbereich soll Dynamisch sein, d.h. für das Jahr 2016 die Spalten A:L und die Zeilen 1 - letzte Zeile mit Inhalt
                                                                      für das Jahr 2017 die Spalten M:X und die Zeilen 1 - letzte Zeile mit Inhalt
3) Alle Spalten sollen auf eine Seite gedruckt werden

Für Eure Hilfe bedanke ich mich sehr herzlich !!!

Viele Grüße
Winni
Hallo,

Zitat:In beigefügte Tabelle (nur Skizzenhaft erstellt und auch noch nicht als xlsm abgespeichert) möchte ich folgendes tun:

... und wie soll dann Dein Code auf Brauchbarkeit und / oder Veränderbarkeit untersucht werden?
(11.01.2017, 15:08)Käpt schrieb: [ -> ]Hallo,


... und wie soll dann Dein Code auf Brauchbarkeit und / oder Veränderbarkeit untersucht werden?

OK verstehe,

hier die Tabelle mit dem Makro, das mit dem dynamischen Druckbereich läuft, aber was man per VBA schreiben muß (bzw. was noch fehlt im vorhandenen Code), damit er alle Spalten auf ein Blatt druckt weiss ich leider nicht - da bräuchte ich Eure Hilfe !

Danke !
Hallo Wiinni,

ich muß mich bei Dir nun sehr entschuldigen.
Nachdem ich meinen Rechner geschrottet hatte, stand mir nur noch xl2003 zur Verfügung.
Darum war es mir nicht möglich, Deine Datei zu lesen. Inzwischen habe ich (seit heute) einen
neuen Rechner und bin dabei, ihn einzurichten. Danach könnte ichr wieder aktiv mitmachen.

Ich bin im Übrigen sehr überrascht, daß in der zurückliegenden Zeit hier niemand weitergemacht
hat. Normalerweise sind die Helfer nämlich nicht so schüchtern  :05:

Also, nochmal, ich entschuldige mich nachdrücklich und bin demnächst wieder StandBy.
Hallöchen,

ich habe mal die Einstellung zum Drucken aufgezeichnet und zusammengefasst. Da bekommt man im Prinzip das:

Code:
With ActiveSheet.PageSetup
        .Orientation = xlPortrait
        .FitToPagesWide = 1
        .FitToPagesTall = 0
    End With

Wo der Code hingehört, weißt Du? Ansonsten frag noch mal nach.

Mit 2016 und 2017 flexibel wäre noch die Frage, wie Du das steuern willst. Brauchst Du denn 2016 noch, da ändert sich doch nix mehr, oder?
Soll da vor dem Drucken eine Frage kommen oder wie stellst Du Dir das vor? Ansonsten kannst Du z.B. die "unerwünschten" Spalten einfach ausblenden.
Auch Hallo,

mein Versuch (bei Printout habe ich den Parameter preview (für die Seitenansicht) auf True geschaltet, wenn es so paßt mußt Du ihn entfernen)

Code:
Sub prcDrucken()
   Dim rngBereich As Range
   Dim rngZelle As Range
   Dim rngDrucken As Range
   Dim strBereich As String
  
   Set rngBereich = Tabelle1.Rows(1).RowDifferences(Rows(1))
   For Each rngZelle In rngBereich
      If rngZelle.MergeArea.Address <> strBereich Then
         Set rngDrucken = rngZelle.Resize(rngZelle.End(xlDown).Row, rngZelle.MergeArea.Columns.Count)
         With Worksheets("Tabelle1").PageSetup
            .Orientation = xlPortrait
            .FitToPagesWide = 1
            .FitToPagesTall = 1
         End With
         rngDrucken.PrintOut preview:=True
         strBereich = rngZelle.MergeArea.Address
      End If
   Next rngZelle

End Sub
Hallo Käpt`n Blaubeer, Steffl & schauan,

Euch Dreien herzlichen Dank ! Dank des Hinweises von schauan habe ich das alles auch nochmal aufgezeichnet mit dem Makrorecorder und bin so nachdem ich manches gelöscht habe von dem ich glaubte, dass ich das nicht benötige, auf folgende funktionierende Lösung gekommen:

Sub Makro1()

    Dim zeilen As Integer
    zeilen = Range("A101").Value
    Range("A1:L" & zeilen).Select
    
    Application.PrintCommunication = False
    With ActiveSheet.PageSetup
        .PrintTitleRows = ""
        .PrintTitleColumns = ""
    End With
    Application.PrintCommunication = True
    ActiveSheet.PageSetup.PrintArea = ""
    Application.PrintCommunication = False
    
    With ActiveSheet.PageSetup
        .Orientation = xlPortrait
        .FitToPagesWide = 1
        .FitToPagesTall = 0
    End With
    
    Application.PrintCommunication = True
    Selection.PrintOut Copies:=1, Collate:=True
    Range("M3").Select

End Sub

Ob ich den kursiven, fettgedruckten Code benötige, hab ich jetzt nicht probiert, aber egal, es läuft:

Er markiert automatisch die nötigen Zeilen und druckt alle Spalten der Markierung auf ein Blatt !

Herzlichen Dank Euch Dreien !

Ich bin noch relativ neu hier und bin positiv überrascht von dem Umgang hier mit Fragenden, Käptn Blaubeer, Du entsdchuldigst Dich bei mir - das brauchst Du nicht, aber dennoch vielen Dank!

Und dass Du dich gewundert hast, dass noch niemand anders mir geholfen hat, und dass dann als sein  es selbstverständlich gleich Steffl und schauan sich meines Problems angenommen haben !!!

Das ist wirklich toll !!!

Aber es stellt sich auch die Frage, wie geht man denn hier generell mit denen um, die viel mehr Fragen haben als Antworten geben (können), weil sie einfach nicht fit genug sind ?

Viele Grüße
vom Winni
Hallo Winni,

es freut mich, daß Du meine Panne so locker wegsteckst. Danke dafür.

Was das angeht
Zitat:Aber es stellt sich auch die Frage, wie geht man denn hier generell mit denen um,
die viel mehr Fragen haben als Antworten geben (können), weil sie einfach nicht fit genug sind ?

bleib hier und mache mit. In keinem Buch und auf keinem Lehrgang kann man so viel und
entspannt und in kürzester Zeit über soviel unterschiedliche Themen erfahren und lernen.
Sowas ist nur in einem Forum möglich.
Von Fragen und Antworten lebt ein Forum. Also stelle Fragen.

Solltest Du selber eine Antwort wissen ... oder auch nur glauben, eine Antwort zu haben, ... dann
nur keine Scheu und antworten. Niemand hier wird Dich auslachen oder beschimpfen.
Es gibt viele Wege, die nach Rom führen, also ran an den Speck.