Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Zeilenhöhe verbundene Zellen vor Drucken ausführen

Zeilenhöhe verbundene Zellen vor Drucken ausführen
02.01.2017 16:44:32
Jana
Hallo zusammen und ein frohes neues Jahr.
Ich habe mir hier vor einiger Zeit ein Makro zusammengesucht mit dem sich die Höhe der verbundenen Zellen prima anpassen lässt. (Vorweg: Ja, die verbundenen Zellen müssen leider sein, das Dokument hat ne Historie und wird nicht nur von mir und auch als Vorlage für weitere Vorgänge genutzt.)
ABER: Das was ich habe, funktioniert ja auch. Es ist unter Module, Modul 1 abgelegt. Ich kann es im Dokument starten und es läuft für die jeweils markierten Zellen problemlos durch.
Jetzt hätte ich es aber zwecks einfacherem Handling gerne so, dass es automatisch VOR dem Drucken des Dokuments abläuft. Dazu muss ich sagen, dass sich die Länge des Dokuments immer wieder ändert, also die beschriebenen Zeilen. Aber wie geht das? Ich habe versucht es so wie es ist in "Diese Arbeitsmapp" mit "Workbook" und dann "BeforePrint" einzufügen, aber das geht nicht.
Leider habe ich wenig bis keine Ahnung von VBA, interessiere mich aber sehr fürs programmieren und würde es jetzt gerne so hinkniffeln, das es geht. Mag jemand helfen?
Sub tr_Start()
Dim rngZelle                  As Range
For Each rngZelle In Selection
ZeilenhoeheVerbundeneZellen rngZelle
Next rngZelle
End Sub
Sub ZeilenhoeheVerbundeneZellen(rngZelle As Range)
'passt die Zeilenhöhe bei verbundenen Zellen automatisch an
'von Hans Herber / angepasst von Thomas Ramel (t.ramel@mvps.org)
'Aufrufen per Übergabeparameter mit der folgenden Zeile:
'Sub test()
'ZeilenhoeheVerbundeneZellen (ActiveSheet.Range("A1"))
'End Sub
Dim CurrentRowHeight As Single, MergedCellRgWidth As Single
Dim CurrCell As Range
Dim CellWidth As Single, PossNewRowHeight As Single
Dim iX As Integer
If IsEmpty(rngZelle) Then
Set rngZelle = ActiveCell
End If
If rngZelle.MergeCells Then
With rngZelle.MergeArea
If .Rows.Count = 1 And .WrapText = True Then
Application.ScreenUpdating = False
CurrentRowHeight = .RowHeight
CellWidth = rngZelle.ColumnWidth
For Each CurrCell In rngZelle.MergeArea
MergedCellRgWidth = CurrCell.ColumnWidth + _
MergedCellRgWidth
iX = iX + 1
Next
MergedCellRgWidth = MergedCellRgWidth + (iX - 1) * 0.9
.MergeCells = False
.Cells(1).ColumnWidth = MergedCellRgWidth
.EntireRow.AutoFit
PossNewRowHeight = .RowHeight
.Cells(1).ColumnWidth = CellWidth
.MergeCells = True
.RowHeight = PossNewRowHeight
End If
End With
End If
End Sub
DANKE!
Anzeige

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zeilenhöhe verbundene Zellen vor Drucken ausfü
03.01.2017 14:22:47
Michael
Hallo!
Hab's mir jetzt nicht groß durchgesehen, aber grds. müsste im BeforPrint-Ereignis des Workbook schon Folgendes reichen (statt der tr_Start-Routine):
Private Sub Workbook_BeforePrint(Cancel As Boolean)
Dim c As Range
For Each c In Me.ActiveSheet.UsedRange
ZeilenhoeheVerbundeneZellen (c)
Next c
End Sub
LG
Michael
Anzeige
AW: Zeilenhöhe verbundene Zellen vor Drucken ausfü
03.01.2017 14:42:47
Jana
Danke für deine Antwort.
Da bekomme ich leider einen Laufzeitfehler 424 "Objekt erforderlich".
Ich dachte, es kann ja eigentlich nicht so schwer sein ein funktionierendes, bestehndes Makro (oder sind es genau genommen zwei?) vor dem Drucken durchlaufen zu lassen. Leider verstehe ich von VBA zu wenig um selber zu lösen.
Danke trotzdem
Anzeige
AW: Zeilenhöhe verbundene Zellen vor Drucken ausfü
03.01.2017 14:49:40
Michael
Hi!
So natürlich
Private Sub Workbook_BeforePrint(Cancel As Boolean)
Dim c As Range
For Each c In Me.ActiveSheet.UsedRange
Call ZeilenhoeheVerbundeneZellen(c)
Next c
End Sub
LG
Michael
AW: Zeilenhöhe verbundene Zellen vor Drucken ausfü
04.01.2017 10:41:21
Jana
Hallo und nochmals danke,
da stürzt er leider während des Druckvorgangs ab. Ich hab es auch so versucht:
Private Sub Workbook_BeforePrint(Cancel As Boolean)
Dim c As Range
For Each c In Me.ActiveSheet.UsedRange
Call tr_Start(c)
Next c
End Sub
Aber da stürzt er ebenfalls ab.
So funktioniert es, aber nur wenn man den gewünschten Bereich vor dem Drucken markiert:
Private Sub Workbook_BeforePrint(Cancel As Boolean)
Call tr_Start
End Sub
Ich nehme an, dass dein "Dim c As Range..." genau das markieren umgehen sollte. Aber leider funktioniert das nicht.
Noch eine Idee? Da es eine Vorlage für mehrere Personen werden soll, suche ich eben nach einer Lösung bei der man nichts vorher manuell extra einstellen muss.
Anzeige
Zeig mal (D)eine Bsp-Datei...
04.01.2017 10:50:23
Michael
Jana,
...ich habe das Gefühl, dass ich mir das genauer ansehen muss.
Daten, v.a. senible Daten, kannst (sollst!) Du durch Dummy-Daten ersetzen; mich würde v.a. der Tabellen-Aufbau interessieren, wie groß Dein Datenbereich ist, wie die verbundenen Zellen so verteilt sind etc.
Dann kann ich hier evtl. tiefer einsteigen.
LG
Michael
Anzeige
AW: Zeig mal (D)eine Bsp-Datei...
04.01.2017 11:13:42
Jana
Hallo,
hier die Dummy-Datei: https://www.herber.de/bbs/user/110319.xlsm
Die Anzahl der Positionen ist immer wieder unterschiedlich, eine maximale Zeilenanzahl möchte ich hier deshalb nicht vorgeben. Die Anzahl der Spalten ist immer gleich und sollten nicht verändert werden, da sie später auch in der Rechnungsstellung verwendet werden. Die Beschreibungen und Überschriften sind unterschiedlich lang, daher das Problem mit der Zeilenhöhe.
Hilft dir das weiter?
Anzeige
Meine AW unten schon gesehen? Passt? owT
05.01.2017 13:29:11
Michael
AW: Meine AW unten schon gesehen? Passt? owT
05.01.2017 15:54:08
Jana
ja, habe ich. Es haben sich zuerst die Spaltenbreiten verändert (so wie in deiner Beispieldatei), aber jetzt hab ich deinen Code nochmal in meine Mappe kopiert da ist das nicht mehr passiert.
Allerdings hat er die letzte Zeile jetzt einmal nicht mit verändert, keine Ahnung warum.
Ich sehe das jetzt erstmal als gelöst an, muss eh mal Rücksprache halten, ob das für das gewünschte Endprodukt so passt.
Vielen Dank für deine Hilfe!
Anzeige
Ok! Gern, gib Bescheid, falls Du was brauchst, owT
05.01.2017 16:51:46
Michael
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige