Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Excel Zellgrößeanpassung von verbundenen Zellen

1,145 views
Skip to first unread message

michel....@evt-gmbh.de

unread,
Apr 20, 2009, 9:08:38 AM4/20/09
to
Hi Leute,

habe das Problem, dass ich verbundene Zellen gerne dynamisch für
mehrere User in Ihrer Größe anpassen
möchte. Dies sollte jedoch nur in der HÖHE der Zelle passieren, nicht
in die Breite.

Ich habe folgendes in der VBA der Arbeitsmappe eingetragen:

Private Sub Worksheet_Change(ByVal Target As Range)
Target.EntireRow.AutoFit
Target.EntireColumn.AutoFit '/Optional/
End Sub

Die variable Zellanpassung funktioniert nun bei einzelnen, nicht
verbundenen Zellen.

Hoffe Ihr könnt mir helfen.

Michel

Alexander Wolff

unread,
Apr 20, 2009, 10:30:24 AM4/20/09
to
<Die variable Zellanpassung funktioniert nun bei einzelnen, nicht
<verbundenen Zellen.

Das ist genauso bei händischem Arbeiten in Excel. Und selbst da haut es -
sogar bei einer einzelnen Zelle - nicht garantiert genau hin. Grund: Das
Windows-GUI, welches mit verschiedenen Ausgaben und Auflösungen fertig
werden muss (es gibt also kein WYSIWYG, nur bei speziellen Profiprogrammen,
die darauf angewiesen sind, wie Fotosatz).

Diese Ungenauigkeit kannst Du Dir nun zunutze machen. Ermittle über Deine
Zellinhalte (etwa: Inhaltslänge bei gegebenem Font/Schriftgröße) mit Formeln
eine Sollhöhe und weise diese der Zeile dann zu. Es bietet sich dabei an,
eine gewisse Reserve einzubauen.

Mit einer fixbreiten Schrift, die Du dann allerdings auch verwenden musst,
fällt diese Berechnung übrigens viel leichter.
--
Moin+Gruss Alexander - MVP for MS Excel - www.xxcl.de - mso2000sp3 --7-2


Melanie Breden

unread,
Apr 20, 2009, 10:55:08 AM4/20/09
to
Hallo Michel,

<michel....@evt-gmbh.de> schrieb:


> habe das Problem, dass ich verbundene Zellen gerne dynamisch für
> mehrere User in Ihrer Größe anpassen
> möchte. Dies sollte jedoch nur in der HÖHE der Zelle passieren, nicht
> in die Breite.

hebe den Zellverbund auf, passe die Zeilenhöhe der ersten Zelle automatisch an.
Ermittel dann diese Zeilenhöhe und verbinde die Zellen wieder.
Die automatisierte Zeilenhöhe wird dann auf die Zeilen des Zellverbundes aufgeteilt.

Diesen Vorgang kannst du auch mit VBA automatisieren:

Private Sub Worksheet_Change(ByVal Target As Range)

Dim dblHeight As Double

With Target.MergeArea
' Zellverbund aufheben
.UnMerge
' 1. Zelle automatische Zeilenhöhe
.Cells(1).EntireRow.AutoFit
' Zeilenhöhe speichern
dblHeight = .Cells(1).RowHeight
' Zellen verbinden
.Merge
' Zeilenhöhe auf alle Zeilen des Zellverbundes aufteilen
.EntireRow.RowHeight = dblHeight / .Count
End With
End Sub


Mit freundlichen Grüssen
Melanie Breden

--
- Microsoft MVP für Excel -
www.melanie-breden.de

Ribbon-Programmierung für Office 2007 http://tinyurl.com/59awla

michel....@evt-gmbh.de

unread,
Apr 21, 2009, 4:34:27 AM4/21/09
to
Hallo Melanie,

vielen dank für die schnelle Beantwortung.

habe deine "Programmierung" eingebunden. Leider wird die Zeilenhöhe
nicht komplett
an den INhalt der Zelle angepasst. So wird immer ein Teil
abgeschnitten.

Hast Du vielleicht eine Idee warum?

Vielen Dank im Voraus für Deine Antwort
Michel

Alexander Wolff

unread,
Apr 21, 2009, 5:08:24 AM4/21/09
to
Die Tastatur von michel....@evt-gmbh.de wurde wie folgt gedrückt:

> habe deine "Programmierung" eingebunden. Leider wird die Zeilenhöhe
> nicht komplett an den INhalt der Zelle angepasst. So wird immer
> ein Teil abgeschnitten. Hast Du vielleicht eine Idee warum?

Baue eine Reserve ein, wie von mir beschrieben. Denn die genauen Höhen
erreichst Du eh nie (für alle Fälle).

Melanie Breden

unread,
Apr 21, 2009, 5:17:24 AM4/21/09
to
Hallo Michel,

<michel....@evt-gmbh.de> schrieb:


> habe deine "Programmierung" eingebunden. Leider wird die Zeilenhöhe
> nicht komplett an den INhalt der Zelle angepasst. So wird immer ein Teil
> abgeschnitten.

Aus der Ferne kann ich mir die Ursache nicht erklären.
Kannst du eine Beispieldatei zum Download bereitstellen?

Ahmed Martens

unread,
Apr 21, 2009, 7:10:43 AM4/21/09
to
Hallo Michel,

Am Tue, 21 Apr 2009 01:34:27 -0700 (PDT) schrieb
michel....@evt-gmbh.de:

ich hatte das Problem dadurch gelöst, dass ich per Makro die Texte
ausgelesen habe und in einer Dummy-Tabelle eingetragen hatte. Danach
habe ich die Zellhöhe der Dummy-Tabelle jewels ausgelesen und damit die
Originaltabelle formatiert. Funktioniert bei mir einwandfrei.

Bedingung ist natürlich, dass die Zelle der Dummy-Tabelle genauso breit
ist wie die verbundenen Zellen der Original-Tabelle.

Hier einmal der Code:

for i = 1 to 100

'Für die Zeilenhöhenberechnung wird ein Temp-Blatt eingefügt
'und die Spaltenbreite angeglichen

Worksheets.Add , ActiveSheet
Columns("A:A").ColumnWidth = Sheets(1).Columns("H:H").ColumnWidth +
Sheets(1).Columns("I:I").ColumnWidth

'Text in Tabelle 2 übertragen
Sheets(2).Range("A1").Formula = Cells(i - 1, 8).Formula

'Zeilenhöhe vergleichen und ggf. angleichen
If Sheets(2).Range("A1").RowHeight > Cells(i - 1, 8).RowHeight Then
With Cells(i - 1, 8)
.RowHeight = Sheets(2).Range("A1").RowHeight
End With

End If


next

Vielleicht hilft Dir das weiter.

Gruß Ahmed
--
Antworten bitte nur in der Newsgroup.
WinXP Prof. / MS-Office 2003 Prof.

michel....@evt-gmbh.de

unread,
Apr 21, 2009, 8:24:07 AM4/21/09
to

>
> Aus der Ferne kann ich mir die Ursache nicht erklären.
> Kannst du eine Beispieldatei zum Download bereitstellen?
>


Hi,
wie stelle ich Dir was zum Download bereit.
Die Excel hat nur 160KB.
kann ich dir diese irgendwie schicken?

Grüße
Michel

Melanie Breden

unread,
Apr 22, 2009, 3:17:13 AM4/22/09
to
Hallo Michel,

<michel....@evt-gmbh.de> schrieb:

> wie stelle ich Dir was zum Download bereit.
> Die Excel hat nur 160KB.
> kann ich dir diese irgendwie schicken?

im Internet gibt es verschiedene Seiten wo man Dateien uploaden kann,

z.B. hier http://www.materialordner.de

Den generierten Link kannst du dann in der NG angeben.

michel....@evt-gmbh.de

unread,
Apr 24, 2009, 3:32:33 AM4/24/09
to
Hi Melanie

>
> Den generierten Link kannst du dann in der NG angeben.
>

Datei steht bereit unter:

http://www.materialordner.de/7xryh1uG8c4FK3q2Jb4wuv5X5khCX8z.html

Freue mich über eine Rückmeldung von Dir.

Liebe Grüße
Michel

Melanie Breden

unread,
Apr 24, 2009, 5:47:21 AM4/24/09
to
Hallo Michel,

<michel....@evt-gmbh.de> schrieb:

bei meinem ersten Code ging ich davon aus, dass die Zellen einer Spalte verbunden sind.

Wenn die Zellen über eine Zeile und mehrere Spalten verbunden sind,
hebe den Zellverbund aus, formatiere die horizontale Textausrichtung nach
"Über Auswahl zentrieren", aktiviere die automatische Zeilenhöhe, verbinde
die Zellen wieder und setze die Ausrichtung wieder auf "Links"

Private Sub Worksheet_Change(ByVal Target As Range)

With Target.MergeArea
' Zellverbund aufheben
.UnMerge

' Ausrichtung über alle Zellen
.HorizontalAlignment = xlCenterAcrossSelection
' automatische Zeilenhöhe
.EntireRow.AutoFit
' Zellen verbinden
.Merge
' Ausrichtung links
.HorizontalAlignment = xlGeneral
End With
End Sub

michel....@evt-gmbh.de

unread,
Apr 24, 2009, 9:25:50 AM4/24/09
to
Hallo Melanie,

Du bist meine Excel-Königin!!!!

Vielen Lieben Dank. Du hast zum Wochenende einen Menschen ungemein
glücklich gemacht!!!!

Liebe Grüße und sonnige Tage

Michel

michel....@evt-gmbh.de

unread,
Apr 24, 2009, 9:48:01 AM4/24/09
to

> Private Sub Worksheet_Change(ByVal Target As Range)
>    With Target.MergeArea
>       ' Zellverbund aufheben
>       .UnMerge
>       ' Ausrichtung über alle Zellen
>       .HorizontalAlignment = xlCenterAcrossSelection
>       '  automatische Zeilenhöhe
>       .EntireRow.AutoFit
>       ' Zellen verbinden
>       .Merge
>       ' Ausrichtung links
>       .HorizontalAlignment = xlGeneral
>    End With
> End Sub
>
SORRY,

hat einmal funktioniert und jetzt nicht mehr.
Komme mir irgendwie bissle dooooooooof vor?

Was hab ich falsch gemacht.

Selbst wenn ich deine Pogrammierung in eine neue EXCEL rein mache,
geht
es dort auch nicht???

Habe ich was im Excel ausgeschaltet?

Grüße
Michel

Melanie Breden

unread,
Apr 24, 2009, 10:00:01 AM4/24/09
to
Hallo Michel,

<michel....@evt-gmbh.de> schrieb:

> hat einmal funktioniert und jetzt nicht mehr.
> Komme mir irgendwie bissle dooooooooof vor?

musst du aber nicht!

> Was hab ich falsch gemacht.

Keine Ahnung ...

> Selbst wenn ich deine Pogrammierung in eine neue EXCEL rein mache,
> geht es dort auch nicht???

> Habe ich was im Excel ausgeschaltet?

Die Routine wird als Ereignisprozedur automatisch bei jeder Änderung im Tabellenblatt
ausgeführt.
Hast du noch eine andere Prozedur laufen, in der die Ereignisse deaktiviert werden und
anschließend nicht wieder aktiviert wurden?

Setze in die Aufrufzeile der Prozedur mit 'F9' einen Haltepunkt und änder den Zellwert.
Der Debugger sollte dann in der erste Zeile stehenbleiben und diese gelb hinterlegt sein.
Ist das so?

michel....@evt-gmbh.de

unread,
Apr 27, 2009, 2:54:25 AM4/27/09
to
Guten Morgen Melanie,

habe es geschafft. Ich hatte die VBA-Programmierung versehentlich in
die Arbeitsmappe
reingemacht. Dann hat es nicht funktioniert.

Nachdem ich sie jedem einzelnen Tabellenblatt zugeordnet habe, geht es
jetzt.

Zusätzlich war meine Makro-Sicherheits-Einstellung noch auf hoch. Der
einfachste Fehler *g*

Jetzt gibt es nur noch eine Sache, wenn eine Zelle befüllt ist und ich
den Inhalt komplett
über die "Entf-Taste" lösche kommt ein VBA Fehler.

Gelbe Markierung bei:
> With Target.MergeArea

Kann man das auch noch ausmerzen?

Liebe Grüße
Michel

Wolfgang Habernoll

unread,
Apr 27, 2009, 7:05:15 AM4/27/09
to
Hallo

><michel....@evt-gmbh.de> schrieb im Newsbeitrag
>news:0c254a8c-05bf-47e5...@d19g2000prh.googlegroups.com...
>Guten Morgen Melanie,

>habe es geschafft. Ich hatte die VBA-Programmierung versehentlich in
>die Arbeitsmappe
>reingemacht. Dann hat es nicht funktioniert.

>Nachdem ich sie jedem einzelnen Tabellenblatt zugeordnet habe, geht es
>jetzt.

>Zus�tzlich war meine Makro-Sicherheits-Einstellung noch auf hoch. Der
>einfachste Fehler *g*

>Jetzt gibt es nur noch eine Sache, wenn eine Zelle bef�llt ist und ich
>den Inhalt komplett
>�ber die "Entf-Taste" l�sche kommt ein VBA Fehler.

>Gelbe Markierung bei:
>> With Target.MergeArea

>Kann man das auch noch ausmerzen?

damit du weiter kommst, ich denke Melanie w�rde dir auch so antworten, f�ge noch
folgende Zeile nach SUB ein.

Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Count > 1 Then Exit Sub ''' << einf�gen
With Target.MergeArea
''
''

--
mfG
Wolfgang Habernoll

[ Win XP Home SP-2 , XL2002 ]

0 new messages