Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1588to1592
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

MergeCells optimale Zeilenhöhe geht (teilweise)

MergeCells optimale Zeilenhöhe geht (teilweise)
09.11.2017 11:11:09
Haika
hallo zusammen.
Folgendes Makro funktioniert (VBA 7.0).
Einen zusammengefügten Bereich aus 4 Zellen übereinander wähle ich aus,
das Makro paßt dann die Höhe jener Zellen gleichmäßig an.
---------------------------------------------------------------------
ZeilenHöheAnpassen()
'
Dim i As Integer
Dim Summe As Integer
For i = 1 To Len(ActiveCell)
If Mid(ActiveCell, i, 1) = Chr(10) Then Summe = Summe + 1
Next i
'folgender Befehl lautet, einzelne Zeilenhöhe =
'Zeilenanzahl+1 * Schriftgröße + Absatz (Maßeinheit Punkte)
'dividiert durch Anzahl verbundener Zellen (immer gleich viele in selber Spalte)
Range(ActiveCell, ActiveCell.Rows).Select
Selection.RowHeight = (Summe + 1) * (9 + 4) / 4
End Sub
---------------------------------------------------------------------
Funktioniert auch einwandfrei. Nur möchte ich nicht jeden verbundenen Bereich manuell wählen. Ich möchte das kleine Sub in einer anderen Sub laufen lassen, etwa so:
---------------------------------------------------------------------
Dim Zelle As Range
Range("W10:W" & Rows.Count).Select
For Each Zelle In Selection
If Zelle.MergeCells = True Then ZeilenHöheAnpassen
Next Zelle
---------------------------------------------------------------------
Leider ohne Erfolg.
Nun benötige ich Eure Hilfe. Vielen Dank.
Gruß

13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: MergeCells optimale Zeilenhöhe geht (teilweise)
09.11.2017 11:35:37
Ralf
Hi Haika,
im Sub Zeilenhöhe anpassen benutzt Du die ActiveCell. Das kann aber immmer nur eine sein. Deshalb musst Du schon die Zelle übergeben, (oder eben markieren, ist aber Quatsch) die es brterifft. Also so, z. Bsp.:

ZeilenHöheAnpassen(zelle as range)
Dim i As Integer
Dim Summe As Integer
For i = 1 To Len(zelle.value)
If Mid(zelle.value, i, 1) = Chr(10) Then Summe = Summe + 1
Next i
'folgender Befehl lautet, einzelne Zeilenhöhe =
'Zeilenanzahl+1 * Schriftgröße + Absatz (Maßeinheit Punkte)
'dividiert durch Anzahl verbundener Zellen (immer gleich viele in selber Spalte)
zelle.RowHeight = (Summe + 1) * (9 + 4) / 4
End Sub
Und der Aufruf dann so:
If Zelle.MergeCells = True Then ZeilenHöheAnpassen zelle

Anzeige
AW: MergeCells optimale Zeilenhöhe geht (teilweise)
09.11.2017 13:11:33
Haika
ups, ich weiß nicht ob das jetzt doppelt hochgeladen wird.
Ralf Anton, vielen Dank nochmals, aber das funktioniert leider nicht. Habe nun eine TestDatei hochgeladen. Mir fällt es nicht leicht, verständlich zu formulieren. Sorry. Noch eine Idee?
https://www.herber.de/bbs/user/117554.xlsm
AW: MergeCells optimale Zeilenhöhe geht (teilweise)
09.11.2017 15:51:49
Ralf
Nimm diesen Code...
In W21 passiert deshalb nichts, weil da keine Zeilenumbrüche vorhanden sind.
Option Explicit
'© 11/2017 * ralf-anton@t-online.de
Sub Test2()
Dim zeile As Long, rng As Range
Set rng = Tabelle1.Range("W10:W" & Tabelle1.Cells.SpecialCells(xlCellTypeLastCell).Row)
For zeile = rng.Row To rng.Row + rng.Rows.Count
If Tabelle1.Range("W" & zeile).MergeCells = True Then
ZeilenHöheAnpassen2 Tabelle1.Cells(zeile, rng.Column)
zeile = zeile + Tabelle1.Range("W" & zeile).MergeArea.Rows.Count
End If
Next zeile
Set rng = Nothing
End Sub
Sub ZeilenHöheAnpassen2(zelle As Range)
Dim i As Integer, var
var = Split(zelle.Value, Chr(10))
i = UBound(var)
If i > 0 Then
zelle.RowHeight = (i + 1) * (9 + 4) / 4
Else
MsgBox "In der verbundenen Zelle " & zelle.Address(0, 0) & " sind keine Zeilenumbrüche  _
vorhanden..."
End If
End Sub

Anzeige
AW: MergeCells optimale Zeilenhöhe geht (teilweise)
10.11.2017 09:37:56
Haika
Hallo Ralf Anton und hallo Forum,
Danke für Deinen neuen Ansatz, Fehlermeldungen gibt es keine.
Jedoch wird die Höhe der Verbundzellen nicht angepaßt.
z.B. hat die erste 2.500 Zeichen, gezeigt werden aber nur etwa 500.
Hat jemand noch eine Idee? Ralf Anton, könntest Du Deinen Code auch noch mal auf der Testdatei versuchen? Mit meinem Makro [Strg+T] konnte eine manuell ausgewählte Verbundzelle das Soll-Ergebnis liefern. Vielleicht liegt es auch an der VBA-Version? Habe 7.0
Danke Forum, bin gespannt, es geht voran.
AW: MergeCells optimale Zeilenhöhe geht (teilweise)
10.11.2017 09:41:29
Haika
edit: [Strg + D] meinte ich ....., sorry
AW: MergeCells optimale Zeilenhöhe geht (teilweise)
10.11.2017 10:21:58
Ralf
Jedoch wird die Höhe der Verbundzellen nicht angepaßt.
z.B. hat die erste 2.500 Zeichen, gezeigt werden aber nur etwa 500.

Die Höhe wird schon angepasst, jedoch nur entsprechend Deiner Vorgabe.
(Summe + 1) * (9 + 4) / 4

Daran habe ich nichts geändert (außer, dass Summe überflüssig geworden ist, weil ja auch die Schleife durch ein Array ersetzt wurde).
Ein durch Strg T oder D gesteuertes Makro konnte ich nicht finden. Nur eins mit Strg + r. Aber das macht nicht das, was Du beschrieben hast.
Du kannst ja mal das versuchen, das richtet sich nach der Schriftgröße:
Sub ZeilenHöheAnpassen2(zelle As Range)
Dim i As Integer, var
Dim h%
h = zelle.Font.Size
var = Split(zelle.Value, Chr(10))
i = UBound(var)
If i > 0 Then
h = IIf((i + 1) * h > 409, 409, i * h)  'Mehr als 409 lässt Excel nicht zu...
zelle.RowHeight = h
Else
MsgBox "In der verbundenen Zelle " & zelle.Address(0, 0) & " sind keine Zeilenumbrüche  _
vorhanden..."
End If
End Sub

Anzeige
AW: MergeCells optimale Zeilenhöhe geht (teilweise)
10.11.2017 11:58:45
Haika
Hm, funktioniert immer noch nicht, ich freue mich aber trotzdem über den Fortschritt.
Ich lade nochmal die Testdatei hoch.
Rückgängig machen der Zeilenhöhe = [Strg+r],
Code dazu in Modul 2. (Höhe 15 Punkte)
Mein Wunschziel ist - rein optisch betrachtet - das Ergebnis wie beim Makro ZeilenHöheAnpassen() per [Strg+d] in Modul 3.
Beide Makros funktionieren bei mir.
Ralf Anton, ich werde die Darstellung der Zeilen in der neu hochgeladenen Testdatei mal so lassen, wie es Makro ZeilenHöheAnpassen() per [Strg+d] in Modul 3 macht.
Ich weiß sonst nicht wie ich das beschreiben soll.
https://www.herber.de/bbs/user/117590.xlsm
Grüße
Anzeige
AW: MergeCells optimale Zeilenhöhe geht (teilweise)
10.11.2017 11:59:45
Haika
edit: schon wieder Thread-reaktivieren vergessen, hmpf! Sorry.
AW: MergeCells optimale Zeilenhöhe geht (teilweise)
10.11.2017 13:30:07
Ralf
...funktioniert immer noch nicht...
diese Aussage basiert auf Deinen Wünschen, geht aber an der Realität vorbei. Ich hatte Dir geschrieben, dass die Zeilenhöhe gewissen Einschränkungen unterliegt. Wenn Du solche Mengen an Text verarbeiten willst, dann ist Excel einfach mal die falsche Wahl. Zur Textbearbeitung gibt es eigens dafür gedachte Programme. Oder... Du teilst den Text eben entsprechend auf...
...ich werde die Darstellung der Zeilen in der neu hochgeladenen Testdatei mal so lassen, wie es Makro ZeilenHöheAnpassen() per [Strg+d] in Modul 3 macht...
...selbstverständlich. Du kannst tun und lassen was auch immer Du willst.
Anzeige
AW: MergeCells optimale Zeilenhöhe geht (teilweise)
10.11.2017 19:54:25
Heika
In Ordnung Ralf Anton, auf jeden Fall nochmals vielen Dank für Deine Bemühungen.
Hat jemand noch eine kreative Makro-Idee? Ich versuch mich natürlich auch weiterhin mit meinen Laienkenntnissen ...
AW: MergeCells optimale Zeilenhöhe geht (teilweise)
10.11.2017 11:20:26
Haika
edit: vergessen Thread zu reaktivieren
AW: MergeCells optimale Zeilenhöhe geht (teilweise)
10.11.2017 21:25:11
Ralf
...nur für den Fall, dass Du mir nicht glaubst. Sieh Dir hier die Beschränkungen an und prüfe, ob sie bei Dir zutreffen...
https://support.office.com/de-de/article/Spezifikationen-und-Beschr%C3%A4nkungen-in-Excel-1672b34d-7043-467e-8e27-269d656771c3
Und da findest Du, was die Zeilenhöhe betrifft, exakt die von mir gemachte Angabe...
AW: MergeCells optimale Zeilenhöhe geht (teilweise)
11.11.2017 17:27:10
Heika
Lieber Ralf Anton,
mir ist aus den letzten Antworten nicht entgangen, dass Du nicht erfreut zu sein scheinst über meine Antworten, auch wenn ich mich bei Dir wertschätzend bedankt habe. Danke auch dieses Mal für Deinen Hinweis mit den Spezifikationen, die mir sehr wohl bekannt sind. Ich habe die Erfahrung machen dürfen als Zuschauer, dass es sehr wohl eine Lösung gibt, wenn die Höhe von 409 überschritten wird, nur ist sie mir nicht mehr zugänglich. Ich möchte Dir sehr gerne aus dem Weg gehen und keine Gelegenheit mehr bieten, dass Du Dich gekränkt fühlen könntest. Dem Forum werde ich nicht fern bleiben. Du brauchst nicht auf diese Worte zu reagieren. Ich bedanke mich nochmals bei Dir.
Gib dem Forum bitte die Chance bei mir mitzumachen.
Danke und beste Grüße.
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige