Supportnet / Forum / Tabellenkalkulation
Breite des Tabellenblattes normieren
Frage
Und nocheinmal Servus!
Ich möchte gerne einen Button in Excel (VBA) einfügen, mit dem man das aktive Blatt auf eine zuvor festgelegte Standardbreite stauchen kann.
Dazu soll eine vordefinierte Spalte entweder weiter oder enger geschoben werden (automatisch).
Sinn ist, dass bei einem Ausdruck eines Excel-Workbooks die Schriftgrössen ziemlich unterschiedlich aussehen und sowas wie Header und Footer unterschiedlich gross ausschauen, wenn die Blatt-Breite unterschiedlich ist. Ziemlich unprofessionell also, wenn man das ganze als pdf verschickt. (Beim Durchblättern springt dann die Kopfzeile hin und her).
Hat jemand eine Idee hierzu? Ich habe nämlich noch nicht einmal diese... :-(
Antwort 1 von coros
Hi ,
so ganz verstehe ich ehrlich gesagt noch nicht, was Du möchtest. Aber eventuell helfen Dir ja nachfolgende Makros, die Du in ein StandardModul kopieren und mit einer Befehlsschaltfläche starten musst, weiter.
Eventuell ist ja eines der beiden Makros etwas für Dich. Bei Fragen melde Dich.
Solltest Du nicht wissen, wie Du den Code in Deine Datei bekommst, dann schau mal auf meiner HP in der Rubrik Anleitungen und dort dann in der Anleitungsnummer 3 nach. Dort stelle ich dazu eine bebilderte Anleitung zur Verfügung, die Dir sicherlich helfen wird.
MfG,
coros
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
so ganz verstehe ich ehrlich gesagt noch nicht, was Du möchtest. Aber eventuell helfen Dir ja nachfolgende Makros, die Du in ein StandardModul kopieren und mit einer Befehlsschaltfläche starten musst, weiter.
Sub Spalte_B_feste_Breite()
Columns("B:B").ColumnWidth = 10
End Sub
Mit dem Makro „Spalte_B_feste_Breite“ wird die Spalte B auf 10 eingestellt. Sub Automatische_Blattskalierung()
With ActiveSheet.PageSetup
.Zoom = False
.FitToPagesWide = 0.5
.FitToPagesTall = False
End With
End Sub
Mit dem Makro „Automatische_Blattskalierung“ wird die Seitenskalierung für das Druckblatt automatisch angepasst, so dass alle Spalten von der Breite her auf ein Druckblatt passen.Eventuell ist ja eines der beiden Makros etwas für Dich. Bei Fragen melde Dich.
Solltest Du nicht wissen, wie Du den Code in Deine Datei bekommst, dann schau mal auf meiner HP in der Rubrik Anleitungen und dort dann in der Anleitungsnummer 3 nach. Dort stelle ich dazu eine bebilderte Anleitung zur Verfügung, die Dir sicherlich helfen wird.
MfG,
coros
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
Antwort 2 von youhoo
Merci für die Ideen.
Ich schätze, es sind noch ein paar Angaben erforderlich:
Es ist bereits eingestellt, dass das Sheet von Spalte A-W immer auf die ausgedruckte Seite passt. (Restliche Spalten sind ausgeblendet und werden nicht benötigt)
Wenn man die Sheets lt. Vorlage unverändert lässt, dann sieht das auch alles sehr schick und gleichmässig aus (weil die Breite dann ja nicht verändert wurde).
Da bei meinen bis zu 50 Sheets jedoch die Spaltenbreiten immer wieder variieren, möchte ich durch eine bestimmte Spalte (z.B. die letzte Spalte W) die Veränderungen in der Summe der Spaltenbreiten (=Sheetbreite) wieder ausgleichen, so dass jedes Sheet gleich breit ist über die Summe der Spaltenbreiten.
Ist das evtl. deutlicher?
Ich schätze, es sind noch ein paar Angaben erforderlich:
Es ist bereits eingestellt, dass das Sheet von Spalte A-W immer auf die ausgedruckte Seite passt. (Restliche Spalten sind ausgeblendet und werden nicht benötigt)
Wenn man die Sheets lt. Vorlage unverändert lässt, dann sieht das auch alles sehr schick und gleichmässig aus (weil die Breite dann ja nicht verändert wurde).
Da bei meinen bis zu 50 Sheets jedoch die Spaltenbreiten immer wieder variieren, möchte ich durch eine bestimmte Spalte (z.B. die letzte Spalte W) die Veränderungen in der Summe der Spaltenbreiten (=Sheetbreite) wieder ausgleichen, so dass jedes Sheet gleich breit ist über die Summe der Spaltenbreiten.
Ist das evtl. deutlicher?
Antwort 3 von coros
Hi youhoo,
sorry, aber da fällt mir im Moment nichts ein, was Dich weiterbringen würde. Aber eventuell hat ja noch jemand anders eine Idee.
MfG,
coros
Jeder macht was er will, keiner macht was er soll, aber alle machen mit.
sorry, aber da fällt mir im Moment nichts ein, was Dich weiterbringen würde. Aber eventuell hat ja noch jemand anders eine Idee.
MfG,
coros
Jeder macht was er will, keiner macht was er soll, aber alle machen mit.
Antwort 4 von youhoo
OK, hier mal ein erster Versuch. Leider bringt er immer die MessageBox, wahrscheinlich hab ich einen groben Denkfehler. Aber von der Struktur her wird es vielleicht klarer...
Wäre über jede Hilfe DANKBAR! :-)
Sub onActwidth()
Dim Col, width, rest As Long
iCol = Cells.Column
width = 0
Do Until iCol = 45 ´screen the columns and calculate total width
width = width + Cells.ColumnWidth
iCol = iCol + 1
Loop
rest = 173 - breite ´calculate the "fillout"
If width >= 173 Then ´if to wide, then error
MsgBox ("Sheet already too wide - use custom width!")
ElseIf width <= 173 Then ´if tighter, fill out the column to reach a width of 173
Cells.ColumnWidth(45) = rest
End If
End Sub
Wäre über jede Hilfe DANKBAR! :-)
Sub onActwidth()
Dim Col, width, rest As Long
iCol = Cells.Column
width = 0
Do Until iCol = 45 ´screen the columns and calculate total width
width = width + Cells.ColumnWidth
iCol = iCol + 1
Loop
rest = 173 - breite ´calculate the "fillout"
If width >= 173 Then ´if to wide, then error
MsgBox ("Sheet already too wide - use custom width!")
ElseIf width <= 173 Then ´if tighter, fill out the column to reach a width of 173
Cells.ColumnWidth(45) = rest
End If
End Sub

