Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1064to1068
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

Zellenhöhe automatisch einstellen

Zellenhöhe automatisch einstellen
09.04.2009 10:26:25
Werner
VBA-Level: befriedigend
Hallo Freunde,
seit geraumer Zeit arbeite ich mit Zellen in einer Spalte, die als String formatiert sind und ganze Sätze mit Zeilenumbruch enthalten. Leider ist manchmal nur ein Teil der Zellen sichtbar, wenn man die RowHeight nicht gross genug ein-
stellt. Lasse ich sie von Excel automatisch anpassen, geschieht gar nichts. Lasse ich von Excel dagegen
die Zellenbreite anpassen, dann wird zwar der gesamte Zelleninhalt sichtbar, die Zelle ist mir
dagegen dann zu breit, was die Bearbeitung stört (besonders wenn es sich bei der Textspalte um eine
von mehreren in einer längeren Tabelle handelt).
Stattdessen würde ich Zellen mit Sätzen drin so anpassen, dass sie durch die Anpassung nicht breiter,
sondern nach unten länger werden, so dass der gesamte Zellinhalt auf dem Bildschirm sichtbar wird.
Manuell ist das kein Problem, doch kann man das für Tausende von Zellen automatisieren, mit oder ohne VBA? Dadurch wurde auch das Problem gelöst, dass Excel umbrochene Stringteile unten in Zellen, die
auf dem Bildschirm nicht sichtbar sind, auch nicht druckt. Leider kann ich nicht für alle Zellen die gleiche
RowHeight einstellen, da jede Zelle unterschiedlich viel Text enthält.
Beste Grüße! Werner R.

20
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zellenhöhe automatisch einstellen
09.04.2009 10:46:07
Uwe
Hi Werner,
warum nutz Du nicht:
Rows("1:100").EntireRow.AutoFit
bzw. Format/ Zeile/ Optimale Höhe?
Gruß
Uwe
(:o)
Ganz so einfach ist das nicht...
09.04.2009 11:16:05
Werner
Hallo Uwe,
habe ich versucht, doch manche Zellen reagieren nicht darauf:

Public Sub Zeilenhoehe()
Dim WsKet As Worksheet
Set WsKet = ThisWorkbook.Worksheets("MeinWorkbook")
WsKet.Rows("1:1000").EntireRow.AutoFit
End Sub


In einer Zelle steht z.B. der Satz "Bei Computern kommt es zu unzähligen Fehlfunktionen."
Sichtbar ist aber nur der Text bis "unzähligen", "Fehlfunktionen" ist nicht sichtbar, auch wenn ich obigen
Code habe laufen lassen.
Diese Zelle ist, wie die anderen, als String mit Zeilenumbruch formatiert.
Wenn ich die Zelle in ein separates, leeres Worksheet schreibe und die Zeile mit Autofit formatiere,
klappt der Zeilenbruch allerdings. Wieso dann nicht in den Zeilen einer langen Spalte? Verstehe ich
nicht! Werner R.

Anzeige
verbundene Zellen? owT
09.04.2009 11:26:55
Rudi
keine verbundenen Zellen
09.04.2009 11:33:52
Werner
Hallo Rudi,
verbundene Zellen gibt es nicht. Allerdings ist die Tabelle in Wirklichkeit weit groesser als
1000 Zeilen. Ich lasse vom Programm die letzte Zeile suchen und habe mich durch Anhalten des Codes auch
vergewissert, dass der Wert der letzten Zeile gross genug ist und die Variable, in die die
letzte Zeile eingelesen wird, als Long definiert ist.
Trotzdem... Werner R.
Ergänzung
09.04.2009 11:57:01
Werner
Hallo Rudi,
noch zur Ergänzung: Die Tabelle hat viele Spalten und viele Zeilen. Auch wenn ich die letzte Zeile
im Code als Klartext eingebe (also "1000" durch die wahre groesste Zeilennummer ersetze), funktioniert
es nicht. Werner R.
Anzeige
AW: keine verbundenen Zellen
09.04.2009 12:01:09
Rudi
Hallo,
schon mal einfach mit
WsKet.Rows.AutoFit
probiert?
Gruß
Rudi
Klappt nicht.
09.04.2009 12:10:26
Werner
Hallo Rudi,
klappt leider auch nicht. Habe deinen Code ausprobiert. Dann habe ich mit
"Application.EnableEvents = False" noch die Eventmakros ausgeschaltet und am Ende des Codes wieder
eingeschaltet. Auch das Hinzufuegen von "Application.Screenupdating = False" hat nichts geholfen.
Wenn ich die betroffene Zelle in Zeile 863 allerdings manuell nach unten erweitere, wird der ganze
Inhalt sichtbar. Nur automatisieren laesst sich das nicht. Werner R.
AW: Zellenhöhe automatisch einstellen
09.04.2009 12:19:48
Oberschlumpf
Hi Werner
Was hältst du von der Idee, dass du uns eine Bsp-Datei zeigst, in der dein beschriebenes Problem sichtbar ist?
Denn wie du ja sicher selbst merkst, gibt’s ohne Bsp nur das Frage/Antwort-Spiel, welches bis jetzt ja auch noch nicht zum Erfolg führte.
Ciao
Thorsten
Anzeige
AW: Zellenhöhe automatisch einstellen
09.04.2009 12:51:16
Dirk
Hallo!
Hatt da auch mal so ein Problem, das eingaben in Zellen in andere Zellen verlinkt ware und dann die Zellhoehe nicht angepasst wurde.
Falls Du Zeilenumbruch fuer die Zellen aktiviert hast kannst Du folgendes Macro in dein Tabellenblatt kopieren:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim Cell As Object
If Not Intersect(Target, Range("A1:k100")) Is Nothing Then
Application.ScreenUpdating = False
For Each Cell In Range("A1:K100")
Cell.EntireRow.AutoFit
Next
'Target.EntireColumn.AutoFit
Application.ScreenUpdating = True
End If
End Sub


Musst halt anpassen, in welchem Bereich das Macro laufen soll.
Falls Immer nur eine manuelle Eingabe erfolgt kann die for each Cell-Schleife auskommentiert werden und fuer Cell setzt Du Range.
Lass' mal hoeren, ob ok.
Gruss
Dirk aus Dubai

Anzeige
Zwischenmitteilung
09.04.2009 13:12:23
Werner
Hallo Rudi, hallo Oberschlumpf, hallo Dirk aus Dubai!
war gerade dabei, eine Beispieldatei zu präparieren, dann kam Dirks Code.
Da mein Breitengrad noch viel weiter östlich als Dubai liegt (Fernost), bitte ich um Aufschub bis morgen. Bis
dahin habe ich meine Datei so weit abgespeckt, dass ich die "kranke Stelle" wie ein Chirurg
herausoperiert habe, um sie euch dann upzuloaden.
Vorher probiere ich aber noch deinen, Dirk, Code aus, für den ich mich herzl. bedanke! Dank auch an euch,
Rudi und Oberschlumpf, f. eure Geduld! Ich hoffe alles bis morgen früh so weit vorbereitet zu haben.
Anzeige
Habe Datei upgeloadet
09.04.2009 13:46:09
Werner
Hallo Rudi, hallo Oberschlumpf, hallo Dirk,
habe es noch geschafft, die Datei upzuloaden, siehe folgenden Link:
https://www.herber.de/bbs/user/61109.xls
Auch Dirks Code hat leider noch nichts bewirkt. Aber seht selbst... Grüße Werner R.
AW: Habe Datei upgeloadet
09.04.2009 14:11:35
Dirk
Hallo Werner,
habe das bei mir mal ausprobiert und funktioniert.
Teste nochmal. Habe die Columns.autofit auskommentiert.
https://www.herber.de/bbs/user/61110.xls
Gruss
Dirk aus Dubai
RowHeight, nicht Spaltenbreite!
09.04.2009 14:16:06
Werner
Hallo Dirk,
lies bitte nochmal den Anfang dieses Thread: Dass es durch Verbreiterung der Spalte geht,
war mir von vorneherein klar. Ich will aber die RowHeight der Zelle verlängern, ohne diese
zu verbreitern, wie zu Anfang des Thread dargelegt. Grüße Werner R.
Anzeige
AW: RowHeight, nicht Spaltenbreite!
09.04.2009 14:25:14
Dirk
Hallo!
Deswegenhabe ich die Columns.Autofit 'rausgenommen. Zeilenhoehe muesste jetzt gehen. Probier mal aus und lass' uns wissen, ob ok.
Dirk
Zwischenmitteilung
09.04.2009 14:31:24
Werner
Hallo Dirk,
melde mich morgen wieder (Begruendung oben im Thread). Besten Dank! Werner R.
Ist das ein Bug von Excel?
10.04.2009 05:00:36
Excel?
Hallo Dirk,
wenn die Zelle vorher manuell verändert und dann zurückgestellt wurde, funktioniert es, wenn man danach einen Makro mit Autofit darüberlaufen lässt. Dieser
Thread bezieht sich jedoch ausschließlich auf rein automatische Zellbearbeitung.
Du sagst, es funktioniert, doch ich glaube, du hast an der Datei etwas verändert, bevor du deinen
endgültigen Code daran ausprobiert hast. Lade die Datei noch einmal vom Herber-Forum herunter
und probiere deinen Code an der frischen Datei aus. Dann geht es nämlich nicht!
In einem Test habe ich zunächst die Zellenhöhe der Problemzelle per VBA auf 30 erhöht und dann
in einem weiteren Makro Autofit darauf angewandt. Siehe da, nach dem ersten Makro war der gesamte Text der Problemzelle sichtbar, doch nach Anwendung von Autofit verschwand das letzte Wort in der
Problemzelle - d.h. das letzte und einzige Wort nach dem Zeilenumbruch wieder.
Folgerung: Ich muss davon ausgehen, dass hier ein Bug von Excel vorliegt. Werner R.
P.S.: Unabhängig davon gibt es bei Zellen ja z.B. das Problem, dass manche Stringzellen mit etwas mehr Inhalt plötzlich mit Nummernkreuzen voll sind. Man bekommt sie nur weg, wenn man das Zellformat von
"Text" auf"Allgemein" umstellt. Das dürfte eigentlich auch nicht sein, schon gar nicht bei Excel 2007.
Anzeige
Notlösung, Vorschlag für
11.04.2009 13:13:23
Werner
Hallo Freunde,
ein Workaround könnte in diesem Fall sein, dass man sich eine eigene Autofit-Funktion schreibt, in der
man die Zellhöhe von der Länge des Zelleninhalts abhängig macht. Bei mehreren Spalten wird aber
auch das ziemlich kompliziert. Werner R.
AW: Notlösung, Vorschlag für
11.04.2009 16:50:43
Tino
Hallo,
also ich habe jetzt mal verschiedene Versionen getestet,
in Deiner Beispieldatei funktioniert dies alles.
With ThisWorkbook.Worksheets("Ket")
  'so geht es bei mir 
  .Rows.AutoFit
  
  'so geht es auch 
  .Rows("1:" & .Rows.Count).EntireRow.AutoFit
End With


Oder ist noch irgendetwas anders als in Deinem Beispiel?
Gruß Tino

Anzeige
AW: Notlösung, Vorschlag für
12.04.2009 15:47:44
Dirk
Hallo!
Ich habe mal die Datei so genommen, wie hochgeladen und mal etwas mit den Macros rumgespielt. Falls Daten in ein neues Tabellenblatt verlinkt sind oder durch ein Macro dort eingetragen werden, erfolgt kein Changeevent. Das laesst sich aber umgehen, wenn man den Changeevent des aktiven Blattes dazu hernimmt (falls die Daten von hier in das andere Blatt verlinkt sind)
Dann einfach eine Prozedur ueber call XXX mir referenz zum Zielblatt aufrufen z.b. call update_Sheet ("Tabelle1")
und dann das Macro update_sheet(SHname as string)
anlegen. Damit die Zellen formatiert werden sollte eine Zellformatierung vorher erfolgen:

Sub update_sheets(SHname As String)
Application.ScreenUpdating = False
For Each Cell In Sheets(SHname).Range("A1:H5")
Cell.WrapText = True
Cell.EntireRow.AutoFit
Next
Application.ScreenUpdating = True
End Sub


Das sollte dann so gehen.
Gruss
Dirk aus Dubai

Anzeige
OK!
13.04.2009 09:31:37
Werner
Hallo Tino, hall Dirk,
möglicherweise liegt es daran, dass in meiner Originaldatei sehr viele Spalten sind.
Aber, wie auch immer, auch meine Notlösung enthält ja "Autofit", ähnlich wie bei euch, und setzt
die Spaltengröße mit If-Anweisung nur dann herauf, wenn Autofit mal nicht ausreichen sollte - ob und aus
welchen Gründen auch immer. Beste Grüße und Dank! Werner R.

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige