Excel 2010 Makro ausführen wenn Druckvorschau aufgerufen wird.

optimfish

Stammgast
hallo zusammen, vielleicht kann mir da jemand weiterhelfen. Eine Teillösung habe ich schon bekommen, aber zum perfektionieren bräuchte ich noch eine Anleitung, wo ich welchen code einfügen muss:

Problem: Ich habe ein Makro, das die Zeilenhöhe anpasst, jedoch wird die Zeile "unendlich erhöht, aber eine benutzerdefinierte Zeilenhöhe nicht unterschritten. Damit ich dieses Makro nicht jedes Mal manuell ausführen muss vor dem Drucken, möchte ich, dass es automatisch ausgeführt wird, wenn ich "Seitenansicht und Druckvorschau" aufrufe.

Frage: was muss ich mit den untenstehenden Angaben machen, dass das Makro "Zeilenhöhe" automatisch ausgeführt wird. Die Angaben habe ich von Hajo im mof-Forum bekommen, er hat leider keine Lust mir Anfänger-Fragen zu beantworten, was ich eigentlich auch verstehe : http://www.ms-office-forum.net/forum/showthread.php?t=302487

Das Makro:
Option Explicit

Sub Zeilenhöhe()
Dim I1 As Long
Rows("1:14").EntireRow.AutoFit
For I1 = 1 To 14
Rows(I1).RowHeight = Application.WorksheetFunction.Max(Rows(I1).RowHeight, 25)
Next
End Sub


Jetzt komme ich aber nicht mehr weiter, das soll ich machen:
Private Sub Workbook_BeforePrint(Cancel As Boolean)
unter diese Arbeitsmapppe.

und.....

Schleife über alle Tabellen.
Code:

Option Explicit
Dim WsTabelle As Worksheet

Sub Aufheben()
For Each WsTabelle In Sheets
With Wstabelle
' Deine Aktionen, nicht den Punkt vor Rows vergessen
End With
Next WsTabelle
End Sub


Bin gespannt ob mir da jemand weiterhelfen kann.

Es grüsst der Franz Xaver
 

Xpert

Stammgast
Der Code wird dann wohl so aussehen:

Code:
Option Explicit
Private Sub Workbook_BeforePrint(Cancel As Boolean)
Dim WsTabelle As Worksheet
For Each WsTabelle In Sheets
    With WsTabelle
        Dim I1 As Long
        .Rows("1:14").EntireRow.AutoFit
        For I1 = 1 To 14
            .Rows(I1).RowHeight = Application.WorksheetFunction.Max(Rows(I1).RowHeight, 25)
        Next
    End With
Next WsTabelle
End Sub

und muss unter "DieseArbeitsmappe" eingefügt werden.
 

optimfish

Stammgast
Hi XPert!

Ganz herzlichen Dank! Das hat ja perfekt geklappt und ist sehr nett von dir!!
Was aber sehr wichtig war (jedenfalls bei mir): Ich musste Flackern vor dem Start des Makros ausschalten und am Schluss wieder einschalten mit <<Application.ScreenUpdating = False>> , bzw. <<Application.ScreenUpdating = True>>, denn sonst flackerten meine Schaltflächen, wo andere Makros dahinter liegen wie wild, und wenn ich "Flackern" am Schluss nicht wieder einschalten würde, dann ist die Arbeitsmappe wie eingefroren. Also wenn es jemand anders braucht, unbedingt untenstehenden Code verwenden.

Code:
Option Explicit

Private Sub Workbook_BeforePrint(Cancel As Boolean)
Application.ScreenUpdating = False 'Flackern ausschalten nicht vergessen
Dim WsTabelle As Worksheet
For Each WsTabelle In Sheets

    With WsTabelle
    
        Dim I1 As Long
        .Rows("1:100").EntireRow.AutoFit 'Anzahl Zeilen bestimmen, muss mit der Codezeile unten übereinstimmen
        
        For I1 = 1 To 100 'Anzahl Zeilen bestimmen, muss mit der Codezeile oben übereinstimmen
        
            .Rows(I1).RowHeight = Application.WorksheetFunction.Max(Rows(I1).RowHeight, 25) 'gewünschte minimale Zeilenhöhe hier angeben
            
        Next
    End With
Next WsTabelle
Application.ScreenUpdating = True 'Flackern einschalten nicht vergessen, Sehr wichtig!!

End Sub
 
Oben