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
... 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 !
Folgende(r) 1 Nutzer sagt Danke an Wiiinnniii für diesen Beitrag:1 Nutzer sagt Danke an Wiiinnniii für diesen Beitrag 28 • Käpt'n Blaubär
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.
13.01.2017, 21:06 (Dieser Beitrag wurde zuletzt bearbeitet: 13.01.2017, 21:07 von schauan.)
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.
. \\\|/// Hoffe, geholfen zu haben. ( ô ô ) Grüße, André aus G in T ooO-(_)-Ooo (Excel 97-2019+365)
Folgende(r) 1 Nutzer sagt Danke an schauan für diesen Beitrag:1 Nutzer sagt Danke an schauan für diesen Beitrag 28 • Wiiinnniii
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
Gruß Stefan Win 10 / Office 2016
Folgende(r) 1 Nutzer sagt Danke an Steffl für diesen Beitrag:1 Nutzer sagt Danke an Steffl für diesen Beitrag 28 • Wiiinnniii
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
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 ?
14.01.2017, 02:07 (Dieser Beitrag wurde zuletzt bearbeitet: 14.01.2017, 02:09 von Käpt'n Blaubär.)
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.