Zeilenhöhe anpassen bei verbundenen Zellen

Hallo

Wie ihr bestimmt wisst, kann man im Excel durch doppelklick zwischen die Zeilennummern die Zeilenhöhe perfekt dem Inhalt anpassen. (ich brauche dies weil es sich bei der Anpassung um meeeehrere Zeilen handelt und nicht nur um eine, also ist von Hand schieben keine Variante.) Nun funktioniert das aber nicht wenn sich in dem gewünschten Bereich verbundene Zellen befinden. Gibt es eine Möglichkeit diese Funktion im Bereich verbundener Zellen zu nutzen? Oder hat jemand eine Idee, wie man dieses Problem sonst lösen könnte?

Ich bin sehr dankbar für eure Antworten!

Gruss

Wie ihr bestimmt wisst, kann man im Excel durch doppelklick
zwischen die Zeilennummern die Zeilenhöhe perfekt dem Inhalt
anpassen. (ich brauche dies weil es sich bei der Anpassung um
meeeehrere Zeilen handelt und nicht nur um eine, also ist von
Hand schieben keine Variante.) Nun funktioniert das aber nicht
wenn sich in dem gewünschten Bereich verbundene Zellen
befinden. Gibt es eine Möglichkeit diese Funktion im Bereich
verbundener Zellen zu nutzen? Oder hat jemand eine Idee, wie
man dieses Problem sonst lösen könnte?

Hallo ilil,

Alt+F11, Doppelklick auf „DieseArbeitsmappe“ deiner Datei, ersten Code reinkopieren.

Einfügen—Modul, zweiten Code reinkopieren, VB-Editor schließen.

Wenn du opt. Zeilenhoehe willst, dann probiere erst den Doppelklick, wenn das nicht klappt Alt+F8, den Makronamen „HoeheOptimal“ auswählen und ausführen lassen.

Lese hierzu auch
http://www.wer-weiss-was.de/article/6209873
wie das mit Alt+F8 eleganter geht.

In „DieseArbeitsmappe“:

Private Sub Workbook\_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)
Selection.Rows.AutoFit
End Sub

In „Modul1“

Sub HoeheOptimal()
Selection.Rows.AutoFit
End Sub

Hallo Reinhard

Erstmal vielen Dank! Ich habe Deinen Tipp gerne angenommen und ausprobiert. (Du scheinst ja ein richtiger Experte zu sein. Habe vorher noch nie gehört von dem VBA Projekt.) Leider funktioniert es nicht so wie ich es möchte. Was aber ev. damit zusammenhängt, dass die Inhalte der Zellen über einen Sverweis gesteuert sind und sich dementsprechend nicht wirklich in dieser Zelle befinden. Ist das möglich und wenn ja, hast Du da vielleicht auch noch eine Lösung?

Leider
funktioniert es nicht so wie ich es möchte. Was aber ev. damit
zusammenhängt, dass die Inhalte der Zellen über einen Sverweis
gesteuert sind und sich dementsprechend nicht wirklich in
dieser Zelle befinden.

Hallo ilil,

probiere es mal so, die Zeile mit der MsgBox zeigt dir in einem Fenster die Vorgänger einer Zelle. Markiere mal Zellen mit deiner SVerweis-Formeln, dann erkennst du den Zusammnhang zwischen der Formel und der Fensterchenanzeige.

Der Code formatiert die Zellenhöhe der jeweiligen Zelle mit der Zellenhöhe der ersten gefundenen Vorgängerzelle.
„ersten gefunden“ wird mit (1,1) festhelegt.
Könnte sein daß man bei SVerweis-Formeln, die zweite gefundene Vorgängerzelle nehmen muß, dann ändere (1,1) ab in (2,1) oder (1,2), verwechsel das oft.

Falls allses klappt kannst du die Codezeile mit der MsgBox löschen.

Und übe das an einer Kopie deiner Mappe, passieren kann nix schlimmes, maximal werden alle dubiose zellenhöhen eingestellt.

Gruß
Reinhard

Sub HoeheOptimal()
Dim Zelle As Range
On Error Resume Next 'Falls Zelle keinen Vorgänger hat
For Each Zelle In Selection
 msgbox zelle.address & " hat die Vorgänger" &chr(10) & Zelle.DirectPrecedents.Address
 Zelle.RowHeight = Zelle.DirectPrecedents(1, 1).RowHeight
Next Zelle
End Sub

-) Danke Reinhard

Aber auch so macht das viereckige Ding nicht was ich will… Ich sehe schon, ich bin ein komplizierter Fall…
Falls Du noch eine Idee hast, ich bin gerne bereit alles zu versuchen, ich sehe nämlich schwarz…

glg

Aber auch so macht das viereckige Ding nicht was ich will…
Ich sehe schon, ich bin ein komplizierter Fall…
Falls Du noch eine Idee hast, ich bin gerne bereit alles zu
versuchen, ich sehe nämlich schwarz…

Hallo ilal,

lade mal eine Beispielmappe, wo ggfs. farblich markiert, ich erkennen kann welche Zellen (-bereiche) da angepasst werden sollen, mit file-upload.de hoch, s. FAQ:2606

Gruß
Reinhard

http://www.file-upload.net/download-3035323/Bespielm…

Die Originaldatei darf ich leider nicht hochladen, denn sie enthält vertrauliche Daten. Aber das Prinzip ist ja das Selbe. Die Zeilenhöhe müsste für die gelbmarkierten Zellen möglichst leicht zu optimieren sein.

Grüezi ilal

Hebe die unselige Zellen-Verbindung auf, dann klappt ein normaler Doppelklick problemlos.

Die Automatik für die Zeilenhöhe wird durch das Verbinden von Zellen ausser Kraft gesetzt (wie noch einige Dinge mehr).

Andernfalls geht nur noch per VBA den Verbund aufheben, die Spaltenbreite vergrössern, die Höhe anpassen und das Ganze wieder zurück.

Mit freundlichen Grüssen

Thomas Ramel

  • MVP für MS-Excel -

Hi Thomas,

Das geht leider nicht weil an der Zellenverbindung unterhalb noch andere Sachen dranhängen und ich 4 Zellen benötige. Aber oberhalb brauche ich nur 2. Wenn es ginge hätte ich das bereits getan! :smile: Wie gesagt der Upload ist nur eine Beispieldatei und kann von dem Layout her auf keinen Fall mit meiner Datei verglichen werden.

Hallo ilal,

probiere mal in einer Kopie der mappe folgenden Code.

Der Code ist für eine bestehende Tabelle mit vielen Datensätzen gedacht. Teste ihn mal. Wenn er klappt, dann stimmen ja die Höhen der forhandenen Datensätze, sag Becheid, dann ändern wir da was und ab dann läuft er automatisch nur dann sobald du in Spalte A von Offerte etwas änderst, geht schneller als immer alle Datensätze zu checken.

in „Modul1“:

Sub HoeheOptimal2()
Dim Zei As Long, wks2 As Worksheet, Gef As Range
Set wks2 = Worksheets("ArtikelnummerPreisliste")
With Worksheets("Offerte")
 For Zei = 1 To .Cells(Rows.Count, 1).End(xlUp).Row
 Set Gef = wks2.Columns(1).Find(.Cells(Zei, 1))
 If Not Gef Is Nothing Then
 .Cells(Zei, 1).RowHeight = Gef.RowHeight
 End If
 Next Zei
End With
End Sub

Gruß
Reinhard

völlig OT forhandenen *aargs* .-) o.w.T.

Grüezi lial

Das geht leider nicht weil an der Zellenverbindung unterhalb
noch andere Sachen dranhängen und ich 4 Zellen benötige. Aber
oberhalb brauche ich nur 2. Wenn es ginge hätte ich das
bereits getan! :smile:

Sei mir nicht böse, aber dann ist das schlicht eine schlecht designte Tabelle.

Wie gesagt der Upload ist nur eine
Beispieldatei und kann von dem Layout her auf keinen Fall mit
meiner Datei verglichen werden.

…warum hast Du sie denn dann zur Verfügung gestellt?

Wir versuchen dich hier konkret zu unterstützen - das wird nicht zielführend möglich sein, wenn Du Datenmaterial zur Verfügung stellst, das auch nicht annähernd mit deinen Tabellen übereinstimmt.

Wie gesagt musst Du das dann halt mir VBA versuchen - verbundene Zellen rufen nämlich mehr Probleme hervor, als sie lösen.

Vielleicht kannst Du ja die folgenden Codes verwenden:

Sub AutoFitMergedCellRowHeight()
'passt die Zeilenhöhe bei verbundenen Zellen automatisch an
'von Hans Herber
Dim CurrentRowHeight As Single, MergedCellRgWidth As Single
Dim CurrCell As Range
Dim ActiveCellWidth As Single, PossNewRowHeight As Single
Dim iX As Integer
 If ActiveCell.MergeCells Then
 With ActiveCell.MergeArea
 If .Rows.Count = 1 And .WrapText = True Then
 Application.ScreenUpdating = False
 CurrentRowHeight = .RowHeight
 ActiveCellWidth = ActiveCell.ColumnWidth
 For Each CurrCell In Selection
 MergedCellRgWidth = CurrCell.ColumnWidth + \_
 MergedCellRgWidth
 iX = iX + 1
 Next
 MergedCellRgWidth = MergedCellRgWidth + (iX - 1) \* 0.71
 .MergeCells = False
 .Cells(1).ColumnWidth = MergedCellRgWidth
 .EntireRow.AutoFit
 PossNewRowHeight = .RowHeight
 .Cells(1).ColumnWidth = ActiveCellWidth
 .MergeCells = True
 .RowHeight = PossNewRowHeight
 '.RowHeight = IIf(CurrentRowHeight \> PossNewRowHeight, \_
 CurrentRowHeight, PossNewRowHeight)
 End If
 End With
 End If
End Sub





Sub ZeilenhoeheVerbundeneZellen(rngZelle As Range)
'passt die Zeilenhöhe bei verbundenen Zellen automatisch an
'von Hans Herber / angepasst von Thomas Ramel ([email protected])
'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.71
 .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

Mit freundlichen Grüssen

Thomas Ramel

  • MVP für MS-Excel -

Grüezi Thomas,

Wie gesagt der Upload ist nur eine
Beispieldatei und kann von dem Layout her auf keinen Fall mit
meiner Datei verglichen werden.

…warum hast Du sie denn dann zur Verfügung gestellt?

Mal von der Unlogik abgesehen, die du erkannt hast, ich denke es liegt an Unkenntnis.
Wir, ich, du, andere helfer wollen ja nur die Tabellenstruktur erkennen/sehen und k.A, ja nach Fall x Beispielzeileen /datenzeilen haben.
(lassen wir mal PTs weg, wenn du die kennen sollstest *schwergrins*)

Und die Unkenntnis besteht darin, daß die Anfrager gar nicht wissen wie sie aus ihrer ach so heiligen Originalmappe binnen weniger Minuten eine schöne Beispielmappe erstellen können.

Ich/wir brauchen ja nicht

Name Vorname telefonummer
Schiffer Claudia 1234-4711

Es reicht meist dicke:
Name Vorname telefonummer
Name1 Vorn1 1
Name2 Vorn2 2

Das geht ruckzuck, tja nun wenn man halt wei, daß es reicht in eine Zelle name1 einzugeben, dann nach unten zu kopieren und schwupps haste name1, Name2, Name3 usw.
Bei Zahlen reihe Autoausfüllen oder wie das heißt.

Naja, wem sag ich das :smile:. Man könnte das in die FAQ aufnehmen, aber wofür, liest ja eh keiner, wenn überhaupt die Flaschen, also du und ich und andere hier bekannte Usernamen :frowning:

Wie gesagt musst Du das dann halt mir VBA versuchen -
verbundene Zellen rufen nämlich mehr Probleme hervor, als sie
lösen.

Da bin ich baff, welche Probleme lösen denn die mistigen verbundenen Zellen? Optische Probleme?
Die kann man m.E. anders lösen.

Vielleicht kannst Du ja die folgenden Codes verwenden:

Es tut mir sehr leid für dich, aber du bist grad da, was ich an sich schon seit langer Zeit fragen wollte, nix wichtiges, du benutzt bei deinen Codes, wie anscheinend auch Hans und auch die MS-Hilfe 4 Zeichen als Einrückung.

Mir ist das zu viel, ich habe 3 Zeichen eingestellt. Und meine Tendenz ist eher auf 2 Leerzeichen umzuwechseln als zu 4.

Gibt es da irgendwas was ich in dem Punkt wissen sollte?
Also ein Argument warum du 4 Leerzeichen benutzt?

Danke ^ Gruß
Reinhard

*grien* Flaschen = Falschen :smile:) o.w.T.

Grüezi Reinhard

Wie gesagt der Upload ist nur eine
Beispieldatei und kann von dem Layout her auf keinen Fall mit
meiner Datei verglichen werden.

…warum hast Du sie denn dann zur Verfügung gestellt?

Mal von der Unlogik abgesehen, die du erkannt hast, ich denke
es liegt an Unkenntnis.
Wir, ich, du, andere helfer wollen ja nur die Tabellenstruktur
erkennen/sehen und k.A, ja nach Fall x Beispielzeileen
/datenzeilen haben.

Ja, das ist wohl korrekt - allerdings ist bei derart starken Vereinfachungen dann das Übertragen auf die eigentliche Mappe das grosse Problem. In aller Regel läuft das dann nämlich darauf hinaus, dass die Diskussion noch ein paar Beiträge weiter geht, das Übertragen nicht klappt und am Ende dann doch die ‚echte‘ Mappe mit der wirklichen Anordnung her muss…

Wie gesagt musst Du das dann halt mir VBA versuchen -
verbundene Zellen rufen nämlich mehr Probleme hervor, als sie
lösen.

Da bin ich baff, welche Probleme lösen denn die mistigen
verbundenen Zellen? Optische Probleme?
Die kann man m.E. anders lösen.

Ja, in erster Linie geht es hier um die Optik - und ja, dies kann man auch anders lösen.

…aber verbundene Zellen entfernen ist oft wie heilige Kühe schlachten… :wink:

Vielleicht kannst Du ja die folgenden Codes verwenden:

Es tut mir sehr leid für dich, aber du bist grad da, was ich
an sich schon seit langer Zeit fragen wollte, nix wichtiges,
du benutzt bei deinen Codes, wie anscheinend auch Hans und
auch die MS-Hilfe 4 Zeichen als Einrückung.

Gibt es da irgendwas was ich in dem Punkt wissen sollte?
Also ein Argument warum du 4 Leerzeichen benutzt?

Nö, da gibt es nichts zu wissen - das macht mein Einrücker automatisch so. Ist also reine Gewohnheit. Kleiner als 3 würde ich aber gefühlsmässig nicht gehen.

Mit freundlichen Grüssen

Thomas Ramel

  • MVP für MS-Excel -

Guten Morgen

@Reinhard, vielen Dank für Deine Hilfe. Bei dem Code den Du mir gegeben hast, werden alle Zeilenhöhen, der ganzen Tabelle angepasst. Mit Ausnahme von den Sverweise. Die werden dann gleich unsichtbar.
Funktioniert also auch nicht.

@Thomas, ja es geht hier um Optik, da hast Du wohl recht. Ich würde ja schon die Originaltabelle zur Verfügung stellen. Aber das Problem dabei ist, dass es sich dabei um eine Datei handelt, die dem Geschäft gehört, für das ich arbeite. Es hat vertrauliche Preise drauf usw. Ich dachte es ginge hier ums Prinzip. Aber wie es aussieht, darf ich von Experten wie Dir nicht auf menschlichkeit hoffen wenn es um Sachen geht, die Du besser weisst als Anfänger wie ich. Aber bedenke vieleicht dass es auch Dinge gibt die andere Menschen besser können als Du und hinterfrage mal wie Du von diesen Menschen in Situationen in denen Du Hilfe benötigst dann gerne behandelt werden möchtest. Es zwingt Dich doch schliesslich niemand zu helfen! Ist alles freiwillig.

Sorry aber das musste mal raus.

@Thomas, Aber fachlich scheinst Du einiges drauf zu Habe. Der Code den Du mir gegeben hast funktioniert. Das einzige Problem dabei ist, dass ich jede Zelle einzeln mit Alt+F8 ansteuern muss. (Ansonsten hebt er mir bei einzelnen Zellen die Verbindung auf) Gibt es auch eine Möglichkeit den Code so einzurichten, dass ich alle Zellen gleichzeitig ansteuern?

Grüezi lial

@Thomas, ja es geht hier um Optik, da hast Du wohl recht. Ich
würde ja schon die Originaltabelle zur Verfügung stellen. Aber
das Problem dabei ist, dass es sich dabei um eine Datei
handelt, die dem Geschäft gehört, für das ich arbeite. Es hat
vertrauliche Preise drauf usw. Ich dachte es ginge hier ums
Prinzip.

Ja, genau darum geht es auch - und die Original-Tabelle was die Inhalte anbelangt ist auch nicht notwendig, sondern ‚nur‘ eine identisch aufgebaute mit Dummy-Inhalt.

Aber wie es aussieht, darf ich von Experten wie Dir
nicht auf menschlichkeit hoffen wenn es um Sachen geht, die Du
besser weisst als Anfänger wie ich. Aber bedenke vieleicht
dass es auch Dinge gibt die andere Menschen besser können als
Du und hinterfrage mal wie Du von diesen Menschen in
Situationen in denen Du Hilfe benötigst dann gerne behandelt
werden möchtest. Es zwingt Dich doch schliesslich niemand zu
helfen! Ist alles freiwillig.

Glaube mir, ich bin lange genug im ‚Geschäft‘ und kenne die Tücken, die mit einzelnen Funktionen zusammenhängen (Zellen verbinden ist eine solche).
Auch bin ich nach wie vor äusserst nahe an Beginnern und ‚Anfängern‘ dran um zu wissen wie man sich in solchen Situationen fühlt.
Aber nur allzu oft ist es leider auch der Fall, dass nicht auf Nachfragen eingegangen wird und Foren und Hilfe-Bretter wie hier einfach zum ‚Absaugen‘ von Wissen missbraucht werden ohne, dass eigene Anstrengungen gemacht werden, das Problem anzugehen.

Du mögest mir meine direkte Art verzeihen, aber mit Unmenschlichkeit hat das gar nichts zu tun.

Mit freundlichen Grüssen

Thomas Ramel

  • MVP für MS-Excel -

Grüezi lial

@Thomas, Aber fachlich scheinst Du einiges drauf zu Habe.

…na wenigstens einen guten Faden hast Du gefunden… :wink:

Der
Code den Du mir gegeben hast funktioniert. Das einzige Problem
dabei ist, dass ich jede Zelle einzeln mit Alt+F8 ansteuern
muss.

Da musst Du mir bitte weiterhelfen - ich kann mir im Moment keinen Reim auf diese Aussage machen.

Erkläre daher für einen Dummy wie Du genau vorgehst.

(Ansonsten hebt er mir bei einzelnen Zellen die
Verbindung auf)

Ja, das tut der Code auch, setzt die Zellen aber anschliessend wieder zusammen.

Gibt es auch eine Möglichkeit den Code so
einzurichten, dass ich alle Zellen gleichzeitig ansteuern?

Ja, sicher - kannst Du definieren was ‚alle Zellen‘ sind?

…damit sind wir wieder beim Thema ‚Dummy-Mappe‘ angelangt, wie Du merkst… :wink:

Mit freundlichen Grüssen

Thomas Ramel

  • MVP für MS-Excel -

Also gut, ich versuche es!
-Was ideal wäre: Wenn ich alle (verbundenen Zellen) dessen höhe ich optimal haben möchte, markieren könnte und anschliessend alle gleichzeitig so ansteuern könnte, dass sie alle gleichzeitig die optimale Höhe annehmen.

-was er mit dem jetzigen Code tut:

Wenn ich nur eine Zelle markiere und mit Alt+F8 den gewünschten Marko (den von Dir angegebenen Code (AutoFitMergedCellRowHeight)) aufrufe passt er mir die Grösse der Zelle wunderbar dem Text an.

Wenn ich aber alle gewünschten Zellen markiere, und mit Alt+F8 den gewünschten Marko (den von Dir angegebenen Code (AutoFitMergedCellRowHeight)) aufrufe dann trennt er mir die 1. Zellenverbindung und passt die Grösse der obersten Zelle dem Text an. Verbinden tut er sie aber nicht mehr und die restlichen der markierten Zellen bleiben wie gehabt.

Ich hoffe Du kannst mir folgen!!!

P.S. Dann bin ich wohl momentan etwas empfindlich. Hat vielleicht auch etwas damit zu tun dass ich schwanger bin. Bitte entschuldige.