Microsoft Excel

Herbers Excel/VBA-Archiv

Verzerrte Ansicht

Betrifft: Verzerrte Ansicht von: Robin Heiming
Geschrieben am: 26.08.2014 16:56:48

Guten Tag liebe Excel Freunde,
ich bin mir nicht sicher wie ich das Problem sonst benennen soll (welches im Betreff steht), aber verzerren trifft es schon ziemlich gut.

Mit verzerren meine ich, ich bastle eine Datei, diese verschicke ich Perfekt passend.
Der andere öffnet sie und es kommt entweder verkleinert oder nicht mehr passend (auf einer Seite) bei ihm an. Was bedeutet ich muss an sein Gerät gehen und dort die Zellen anpassen (Zeilenhöhe, Zeilenbreite).

So nun habe ich eine Sache, die aber leider etwas Zeit kostet und zwar:

Ich habe ein Makro das beim öffnen der Datei startet, diese geht dann in die einzelnen Tabellenblätter rein und passt die Werte so an, wie ich sie vorgeben habe.
Nunja, alles schön und gut es funktioniert 99,9 % super (zumindest passt es immer auf ein Blatt, manchmal leider trotzdem kleiner als vorgegeben, immerhin besser als ein vorgegebenes Blatt auf 4 Seiten - verzerrt).

Hier einmal die Makro:

Makro 1 beim öffnen:

Sub Workbook_Open()
    Call refresh
End Sub

Makro 2 aufgerufen durch Makro 1:
Sub refresh()

    Application.DisplayAlerts = False
    Application.ScreenUpdating = False

    Sheets("Blattname").Select
    Call unprotectstart
    With Sheets("Blattname")
        .Columns("A:A").ColumnWidth = 10.71
        .Columns("B:B").ColumnWidth = 10.71
        .Columns("C:C").ColumnWidth = 4.14
        .Columns("D:D").ColumnWidth = 16.29
        .Columns("E:E").ColumnWidth = 3.57
        .Columns("F:F").ColumnWidth = 4.14
        .Columns("G:G").ColumnWidth = 6.57
        .Columns("H:H").ColumnWidth = 4.71
        .Columns("I:I").ColumnWidth = 10.71
        .Columns("J:J").ColumnWidth = 10.71
        .Rows("1:3").RowHeight = 19.5
        .Rows("4:13").RowHeight = 15
        .Rows("14:14").RowHeight = 19.5
        .Rows("15:23").RowHeight = 15
        .Rows("24:26").RowHeight = 19.5
        .Rows("27:27").RowHeight = 15
        .Rows("28:30").RowHeight = 19.5
        .Rows("31:31").RowHeight = 15
        .Rows("32:38").RowHeight = 19.5
        .Rows("39:39").RowHeight = 15
        .Rows("40:45").RowHeight = 19.5
    End With

    Range("H6").Select
    Call protectstart

    Application.ScreenUpdating = True
    Application.DisplayAlerts = True
    
End Sub
Ich habe momentan 10 Blätter in dieser Datei, dass bedeutet das das Makro (welches ich gekürzt habe "Makro 2", sich so ungefähr in der Form wiederholt).

Nun ja es dauert schon eine Weile, bis die Datei dann offen ist.

Mein Frage nun: Geht es auch anders bzw. schneller, oder gibt es einen anderen Weg diesem Problem aus dem Weg zu gehen?

Vielen dank im voraus.

Mit freundlichen Grüßen

Robin Heiming

  

Betrifft: AW: Verzerrte Ansicht von: Martin
Geschrieben am: 27.08.2014 07:09:34

Hallo Robin,

erst einmal würde ich das Makro etwas optimieren:

Sub refresh()

    With Application
        .DisplayAlerts = False
        .ScreenUpdating = False

        Sheets("Blattname").Select
        Call unprotectstart
        With Sheets("Blattname")
            .Columns("A:B", "I:J").ColumnWidth = 10.71
            .Columns("C:C", "F:F").ColumnWidth = 4.14
            .Columns("D:D").ColumnWidth = 16.29
            .Columns("E:E").ColumnWidth = 3.57
            .Columns("G:G").ColumnWidth = 6.57
            .Columns("H:H").ColumnWidth = 4.71
            .Rows("1:45").RowHeight = 19.5
            .Rows("4:13", "15:23", "27:27", "31:31", "39:39").RowHeight = 15
        End With
    
        Range("H6").Select
        Call protectstart

        .ScreenUpdating = True
        .DisplayAlerts = True
    End With
End Sub
Ob alles auf ein Blatt passt, ist auch von der Druckerkonfiguration abhängig. Am selben Computer kann bei einem Drucker alles auf eine Seite passen, aber bei Wahl eines anderen Druckers nicht mehr. Mit folgendem Code kann das Problem aber behoben werden:
    With ActiveSheet.PageSetup
        .Zoom = False
        .FitToPagesWide = 1
        .FitToPagesTall = 1
    End With
Viele Grüße

Martin


  

Betrifft: AW: Verzerrte Ansicht von: Robin Heiming
Geschrieben am: 27.08.2014 14:56:51

Grüße Martin,
das hab ich mir schon gedacht gehabt, danke für diesen Vorschlag.
Ganz hatte es, so wie du es dargestellt hattest, nicht funktioniert.

Falsch (alt):
.Columns("A:B", "I:J").ColumnWidth = 10.71

Richtig (neu):
.Range("A:B, I:J").ColumnWidth = 10.71

zumindest war das bei mir so, dass ich es ändern musste.

Ich habe den zweiten Teil noch nicht ausprobiert, ich weis auch noch gar nicht so recht wohin ich diesen Teil hängen soll, könntest du mir das bitte erläutern? *dumm anstell*

Eventuell wäre es hilfreich zu erwähnen, dass ich die ganze Arbeitsmappe über ein Makro drucken lasse.

Grüße

Robin


  

Betrifft: Thread Open von: Robin Heiming
Geschrieben am: 27.08.2014 14:57:51

Kontrollkästchen vergessen...


  

Betrifft: AW: Thread Open von: schauan
Geschrieben am: 29.08.2014 20:36:19

Hallo Robin,

Du kannst den code entweder in Dein Sub anstelle des bisherigen einfügen oder in das Modul DieseArbeitsmappe. Dort wählst Du oben links Workbook und oben Rechts BeforePrint aus und dort fügst Du den code ein. Dein komplettes Makro brauchst Du in dem Fall nicht mehr.


Hoffe geholfen zu haben, Grüße von André (schauan) aus Gera - Excel-97-2013


 

Beiträge aus den Excel-Beispielen zum Thema "Verzerrte Ansicht"