2010 Druckbereiche in Zelle angeben

Dieses Thema im Forum "MS Excel" wurde erstellt von Posti_Jens, 9 Februar 2017.

  1. Posti_Jens

    Posti_Jens
    Expand Collapse
    New Member

    Registriert seit:
    1 Februar 2017
    Beiträge:
    5
    Zustimmungen:
    0
    Hallo Forum,
    das ist mein erster Beitrag hier und ich muss mich hier erst noch reinfuxen, also sorry falls was unklar ist oder falsch steht ...

    Also zu meinem Problem:
    Ich möchte in meinem Tabellenblatt die Druckbereiche in je eine Zelle schreiben und dann mittels Commandbutton die Druckvorschau öffnen. Schick wäre es wenn die Tabelle im Druckbereich gleich im Querformat, zentriert und aufs A4 Blatt angepasst würde. Bisher müsste das bei Bedarf händisch nachgestellt werden. Jeder Druckbereich wird auf einem A4 Blatt, quer ausgedruckt.
    Bisher habe ich es direkt über VBA gemacht. Das hat aber den Nachteil das beim einfügen einer (mehrerer Zeilen) sich der Druckbereich nicht automatisch anpasst und Administrativ angepasst werden muss.
    Es hat aber nicht jeder User Zugriff auf's VBA Project.
    Die direkte Druckbereichsauswahl über Excel ist hier ausdrücklich außen vor, da bei mehreren Benutzern
    keiner genau weiß was der andere gerade eingestellt hat oder eben auch nicht.

    Hab mir gerade noch überlegt das ein zweiter Button die "Eingabemaske" auf schreibgeschützt sperrt.
    und das Feld "grau" färbt. Somit ist ungewolltes ändern nicht mehr möglich.

    Danke für Eure Hilfe,
    freue mich schon auf Antworten.
    VG, Jens

    Zum besseren Verständnis hier mal eine Musterdatei ohne Makros, etc.
     

    Anhänge:

  2. Fibonacci

    Fibonacci
    Expand Collapse
    Member Deluxe

    Registriert seit:
    11 Oktober 2006
    Beiträge:
    726
    Zustimmungen:
    7
    Hallo,

    wahrscheinlich erkenne ich das Problem nicht, aber wäre es nicht ausreichend, via:
    Code:
    Private Sub Workbook_BeforePrint(Cancel As Boolean)
    '...
    End Sub
    
    einzugreifen?
     
  3. Posti_Jens

    Posti_Jens
    Expand Collapse
    New Member

    Registriert seit:
    1 Februar 2017
    Beiträge:
    5
    Zustimmungen:
    0
    Hallo Fibo,
    wenn Du schon keinen Durchblick hast, wer dann ;)

    Also hier mein bisher verwendeter VBA Code aus meiner Original Datei:
    Code steht im Tabellenblatt:
    Private Sub CmdDrucken1_Click()
    Brotzeitpause.PageSetup.PrintArea = "$A$14:$Y$28,A$32:$Y$46,$A$50:$Y$64"
    Application.Dialogs(xlDialogPrint).Show
    End Sub

    Ein klick auf den "Drucker" Knopf und los gehts.

    Mein erster Gedanke war erst eine Userform mit Textboxen. Ist aber zu umständlich ...
    Mein zweiter Gedanke, gleich das Tabellenblatt anzapfen.
    Die PrintArea müsste dann auf die Zellen verweisen und deren Inhalt einlesen ...
    also so ähnlich wie hier
    Sub Druckbereich()
    With ActiveSheet
    .PageSetup.PrintArea = Range(Range("D10").Text).Address
    .PrintOut
    End With
    End Sub
     
  4. Posti_Jens

    Posti_Jens
    Expand Collapse
    New Member

    Registriert seit:
    1 Februar 2017
    Beiträge:
    5
    Zustimmungen:
    0
    ohh, hab ich das jetzt schon gesendet ?!
     
  5. Fibonacci

    Fibonacci
    Expand Collapse
    Member Deluxe

    Registriert seit:
    11 Oktober 2006
    Beiträge:
    726
    Zustimmungen:
    7
    Yep - ich kann es lesen - aber du kannst es nachträglich editieren bzw. löschen, wenn du noch einmal in dein Posting gehst.

    Ich glaube die Identifikation vom Zielbereich ist tatsächlich etwas schwierig, da ich keine eindeutigen Merkmale erkenne. U. U. hast du die Möglichkeit, verbindliche Merkmale zu hinterlegen. Den Druckbereich definieren zu lassen, finde ich immer etwas umständlich und unzuverlässig - insbesondere wenn man eine Vielzahl von Anwendern berücksichtigen muss.

    Ich habe im Beispiel ein Ereignis hinterlegt und den Druckbereich an zwei Merkmalen fixiert. Um den Druckbereich in Zeilen und Spalten variabel zu halten, hast du in der Festlegung jeweils Spielraum (+ 5 oder - 2 und so weiter).

    Ich hoffe es hilft. Andernfalls schaue ich mir gern eine Adaption an und versuche bei der Problemlösung zu helfen.
     

    Anhänge:

  6. Posti_Jens

    Posti_Jens
    Expand Collapse
    New Member

    Registriert seit:
    1 Februar 2017
    Beiträge:
    5
    Zustimmungen:
    0
    Hallo Fibo,
    erstmal vielen Dank für deine Mühe.
    werde mich morgen intensiv mit deinem Code beschäftigen
    und für meinen Bereich mal anpassen.
    Mal sehen ob ich damit auf einen grünen Zweig komme.
    Werde mich melden, falls noch was ist.

    VG, Jens
     
  7. Fibonacci

    Fibonacci
    Expand Collapse
    Member Deluxe

    Registriert seit:
    11 Oktober 2006
    Beiträge:
    726
    Zustimmungen:
    7
    Welch eine Kasteiung, sich solchen Themen zu so später Stunde zu widmen. Kann es sein, dass du unter Termindruck oder Schlafstörungen leidest ;-)

    Viel Erfolg und sollten sich Fragen ergeben sind die Member im Forum und ich bestimmt gern behilflich.
     
  8. Posti_Jens

    Posti_Jens
    Expand Collapse
    New Member

    Registriert seit:
    1 Februar 2017
    Beiträge:
    5
    Zustimmungen:
    0
    Hallo Fibo,
    hallo Forum,
    hab mal die Mustermappe anonymisiert und angepasst.

    Frage1: (Wie) kann der VBA Code im Modul noch vereinfacht werden?
    Was noch fehlt ist ein Errorhandler, davon hab ich aber keinen schimmer wie man das macht und wo rauf man da achtet ...

    Frage2: Kann man der Mesagebox im Tabellenblatt sagen welche Zeilen/ Spalten sich geändert haben.
    Eventuell ist eine Dokumentation in einer Hilfstabelle sinnvoll.
    Bisher hab ich da nur eine Bereichsüberwachung drin "Range A:AZ"
    Somit weis ich nur dass sich etwas geändert hat. Aber ich weis nicht wo und was genau.
    Also ist das bestenfalls ein Anfang und ziemlich oberflächlich.

    Frage3:
    >>Meine Listen werden über Formeln befüllt. Hauptsächlich kommt SVERWEIS zum Einsatz
    Funktioniert recht gut, hat aber leider Hilfstabellen zur Folge. Sicherlich geht das auch eleganter zu lösen.<<

    Nun brauche ich aber noch einen Vergleich. Zwei unterschiedliche Namen die aber das gleiche tun.
    Hier wird derzeit nur der erste Treffer angezeigt. Der 2. aber komplett ignoriert
    Wie geht das richtig zu lösen? - google sagtwas von Summenprodukt, bekomme das bisher allerdings nicht zum Laufen .

    Großer Baum "roter Apfel"
    Kleiner Baum "roter Apfel"

    VG, Jens
     

    Anhänge:

  9. Fibonacci

    Fibonacci
    Expand Collapse
    Member Deluxe

    Registriert seit:
    11 Oktober 2006
    Beiträge:
    726
    Zustimmungen:
    7
    Hallo Jens,

    du hast dir viel Mühe gemacht und die Unterlage sieht auf den ersten flüchtigen Blick wirklich sehr gut aus. Kompliment.

    Ich muss etwas tiefer einsteigen und denke, bis zum Finale (Möglichkeiten wecken i. d. R. Begehrlichkeiten - was ich persönlich begrüße) wird das wahrscheinlich nicht der letzte Post sein. Sofern du Termindruck hast, beschränke ich mich auf die konkrete Beantwortung deiner Fragestellung oder freue mich, wenn weitere Member einsteigen.
    Wenn du Zeit hast, bin ich beim Tüffteln dabei.

    Eine kleine und rein redaktionelle Anmerkung anbei > blende doch mal die Gitternetzlinien (Optionen) aus und überprüfe deinen persönlichen Eindruck in der Bildschirmansicht ;-)

    Hast du einen fixen Termin? (Hierfür kann ich nicht hinreichend Ressourcen und Muße versprechen)
     
  10. Dancer79

    Dancer79
    Expand Collapse
    Member Deluxe

    Registriert seit:
    29 Juni 2002
    Beiträge:
    316
    Zustimmungen:
    0
    Wenn du immer alles drucken willst kannst du das so machen.
    DAs Macro ermitteln die jeweiligen Druckbereich selbstständig.
    Er sucht in Spalte A nach dem dem Fachgebiet und in Spalte Y nach Ende
    Der Bereich der sich daraus ergibt wird zum Druckbereich und wird dann wie du es in deinem machst als Druck angeboten.

    Das macht er solange wie er Fachgeit und Ende findet also sprich wenn du 2 Bereiche Formatierst, druck er 2x, wenn du warum auch immer darunter einen weiteren Bereich formatierst dann 3 mal usw.

    So brauchst du nur ein Macro und die Hilfstabelle ist damit überflüpssig und es könnten noch Zeilen eingefügt werden warum auch immer ohne das man das anpassenmuss. ;-)

    Dann hab ich ergänz,das der Druck immer auf eine Seite angepasst wird und nicht auf 2 Blättern gedruckt wird. Geht mit
    .FitToPagesWide = 1
    .FitToPagesTall = 1

    Hinweis: ActiveSheet.Cells(Rows.Count, 25).End(xlUp).Row
    Zählt im Activen Blatt die verwendeten Zeilen in der Spalte 25 = Y

    Sub Druckbereich_ermitteln_und_drucken()
    Dim S As Integer
    Dim E As Integer
    Dim Start_ermittlung As Integer
    Dim Ende_ermittlung As Integer

    ermittlung_neustart:
    If S = 0 Then
    Start_ermittlung = 1
    Ende_ermittlung = 1
    Else
    Start_ermittlung = E
    Ende_ermittlung = Start_ermittlung + 1
    End If

    For S = Start_ermittlung To ActiveSheet.Cells(Rows.Count, 25).End(xlUp).Row
    If Range("A" & S) = "Fachgebiet" Then
    For E = Ende_ermittlung To ActiveSheet.Cells(Rows.Count, 25).End(xlUp).Row
    If Range("Y" & E) = "Ende" Then
    With ActiveSheet.PageSetup
    .PrintArea = "A" & S & ":Y" & E '' Druckbereich aus Zelle einlesen
    .CenterHorizontally = True '' auf Seite Horizontal zentrieren
    .CenterVertically = True '' auf Seite Vertikal zentrieren
    .PaperSize = xlPaperA4 '' DIN A4 Papier
    .TopMargin = 40 '' oberer Rand 40 Punkte
    .Orientation = xlLandscape '' im Querformat drucken

    .FitToPagesWide = 1
    .FitToPagesTall = 1

    '.PrintOut
    Application.Dialogs(xlDialogPrint).Show '' Druckvorschau öffnen
    ' Direktdruck
    GoTo ermittlung_neustart
    End With
    Else
    End If
    Next E
    Else
    End If
    Next S
    End Sub
     
    #10 Dancer79, 15 Februar 2017
    Zuletzt bearbeitet: 15 Februar 2017
Die Seite wird geladen...

Diese Seite empfehlen