Live-Forum - Die aktuellen Beiträge
Datum
Titel
23.04.2024 14:59:21
23.04.2024 14:47:39
23.04.2024 14:23:45
Anzeige
Archiv - Navigation
1632to1636
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

Automatische Zellenhöhe bei verbunden Zellen

Automatische Zellenhöhe bei verbunden Zellen
20.07.2018 13:09:15
Sascha
Hallo zusammen,
mir wurde bei meinem letzten Problem so schnell und freundlich geholfen, da dachte ich, ich versuche es gleich nochmal :)
Ich habe aus dem Archiv
https://www.herber.de/forum/archiv/940to944/943338_Automatische_Zellenhoehe_bei_verbunden_Zellen.html
folgenden Code gemopst:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim rng As Range, arrZ, colZ As New Collection, ii As Long
arrZ = Array(11, 28, 30, 32, 34, 36, 38, 41)     ' Nummern der überwachten Zeilen anpassen
For Each rng In Target
If Not IsError(Application.Match(rng.Row, arrZ, 0)) Then
On Error Resume Next
colZ.Add rng.Row, CStr(rng.Row)
On Error GoTo 0
End If
Next rng
For ii = 1 To colZ.Count
ZeilenhoeheVerbundene colZ(ii)
Next ii
Set colZ = New Collection
End Sub 
und
'   nach: www.herber.de/mailing/137101h.htm
'   "Zeilenhöhe bei verbundenen Zellen anpassen"
Sub ZeilenhoeheVerbundene(lngZeileNr As Long)
'  Parameter ist die Zeilennummer.
'  In einer Zeile kann es mehrere verbundene Zellen geben.
Dim sngHoehe As Single, cc As Integer, RngC As Range
Dim sngActWid As Single, rngM As Range, sngMergWid As Single
Application.ScreenUpdating = False
With Rows(lngZeileNr)
.AutoFit
sngHoehe = .RowHeight    ' Mindesthöhe (insbes. nicht-verbundene Zellen)
End With
For cc = 1 To Cells(lngZeileNr, Columns.Count).End(xlToLeft).Column
If Cells(lngZeileNr, cc) > "" And Cells(lngZeileNr, cc).MergeCells Then
Set RngC = Cells(lngZeileNr, cc)
If Len(RngC) > 1000 Then
MsgBox "Der Text in " & RngC.Address(0, 0) & " hat über 1000 Zeichen !" _
& vbLf & vbLf & "Bitte kürzen!", vbCritical, "ZeilenhoeheVerbundene"
RngC.Select
Exit Sub
End If
With RngC.MergeArea
If .Cells(1).Address = RngC.Address And .WrapText = True Then
sngActWid = RngC.ColumnWidth
For Each rngM In .Cells
sngMergWid = rngM.ColumnWidth + sngMergWid
Next
sngMergWid = sngMergWid + (.Count - 1) * 0.71
.MergeCells = False
RngC.ColumnWidth = sngMergWid
.EntireRow.AutoFit
sngHoehe = Application.Max(sngHoehe, RngC.Height)
RngC.ColumnWidth = sngActWid
.MergeCells = True
End If
End With
End If
Next cc
Rows(lngZeileNr).RowHeight = sngHoehe
Application.ScreenUpdating = True
End Sub
jetzt habe ich zwei Phänomene:
1.
Das Tabellenblatt soll, um ungewollte Änderungen an den Daten zu verhindern, mit Blattschutz geschützt sein.
Die betroffenen verbunden Zellen, in denen der Text eingegeben wird und die Zeilenhöhe dann automatisch angepasst wird, sind darum natürlich ohne Schutz.
Aber sobald ich einen langen Text angebe, und die Zeilenhöhe angepasst wird, ist sind 4 von den 5 verbundenen Zellen wieder geschützt. Das hat zur Folge, dass bei einer weiteren Eingabe in die Zelle die Fehlermeldung "Die Autofit-Methode des Range-Objektes konnte nicht ausgeführt werden.
Ich habe es bereits mit protect/unprotect im scribt versucht, hat aber auch nichts bewirkt.
2.
Ich habe in einer Zeile Zwei Texteingabebereiche, die jeweils aus 3 verbundenen Zellen bestehen.
Gebe ich nun in den ersten Bereich einen langen Text ein, passt sich die Höhe wie gewollt an. Gebe ich dann einen Text, der länger als der Erste ist, in den zweiten Bereich ein, passiert nichts mehr.
Hat da jemand eine Idee ob, und wenn ja wie man das beheben kann?
Punkt 1 wäre mir da am Wichtigsten... :)
Danke im Voraus und viele Grüße,
Sascha

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Automatische Zellenhöhe bei verbunden Zellen
20.07.2018 13:29:57
Sascha
Ok, das Problem mit dem Zellenschutz habe ich gelöst.
Sehr unelegant, aber es funtkioniert:
Range("B11:G11").Locked = False
Range("B28:D28").Locked = False
Range("B30:D30").Locked = False
Range("B32:D32").Locked = False
Range("B34:D34").Locked = False
Range("B36:D36").Locked = False
Range("B38:D38").Locked = False
Range("B41:D41").Locked = False
Range("E28:G28").Locked = False
Range("E30:G30").Locked = False
Range("E32:G32").Locked = False
Range("E34:G34").Locked = False
Range("E36:G36").Locked = False
Range("E38:G38").Locked = False
Range("E41:G41").Locked = False

Anzeige
AW: Automatische Zellenhöhe bei verbunden Zellen
20.07.2018 13:31:09
Sascha
Aber das geht doch bestimmt auch einfacher, oder?
AW: Automatische Zellenhöhe bei verbunden Zellen
20.07.2018 14:27:43
Daniel
Hi
ich hatte mal die Idee, zum Ermitteln der erforderlichen Zeilenhöhe in Verbundzellen den Text aus der Zelle in ein Textfeld zu schreiben, die Formatierungen anzupassen und dann im Textfeld die Höhe automatisch berechnen zu lassen.
das wäre dann etwas einfacher.
Allerdings besteht das Problem, dass Excel in der Zelle einen anderen Zeilenabstand verwendet als im Textfeld und solange man das nicht angleichen kann, gibt's halt ne Abweichung, die um so größer wird, je mehr Zeilen du hast.
schau mal hier wäre der Code dazu:
http://www.office-loesung.de/p/viewtopic.php?f=166&t=766242&p=3155100#p3155082
Gruß Daniel
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige