Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema CommandButton
BildScreenshot zu CommandButton CommandButton-Seite mit Beispielarbeitsmappe aufrufen

Optimale Zeilenhöhe für einzelne Zelle | Herbers Excel-Forum


Betrifft: Optimale Zeilenhöhe für einzelne Zelle von: Joachim
Geschrieben am: 05.01.2010 20:20:05

Hallo,
wenn man in Excel die Funktion "Optimale Höhe" einstellt, wird die entsprechende Zeile auf die Zelle eingestellt mit den meisten Informationen.
Kann man per Makro die Zeile einer einzelnen Zelle in "optimaler Höhe" so anpassen, auch, wenn zB die benachbarte Zelle noch mehr Informationen hätte.
Also zB. in Zelle A1 stehen 5 Zeilen drin, in Zelle B1 stehen 30 Zelilen drin. Dann möchte ich per Makro die Höhe der Zelle A1 auf 5Zeilen einstellen, auch wenn in B1 noch mehr steht.

Geht das ?
Danke
Joachim

  

Betrifft: AW: Optimale Zeilenhöhe für einzelne Zelle von: Daniel
Geschrieben am: 05.01.2010 20:26:04

Hi

als Workaround per Markro einfach so:

- den Inhalt der Zelle in eine leere Zeile unterhalb der Daten kopieren (gleiche Spalte, wg, der Breite)
- hier die Zeilenhöhe auf den optimalen Wert einstellen lassen
- die Zeilenhöhe auslesen und auf die Originalzeile übertragen

Gruß, Daniel


  

Betrifft: Danke, Daniel von: Joachim
Geschrieben am: 05.01.2010 22:30:23




  

Betrifft: AW: Optimale Zeilenhöhe für einzelne Zelle von: Josef Ehrensberger
Geschrieben am: 05.01.2010 20:42:10

Hallo Joachim,

für Zelle E19 im aktiven Blatt z.B. so.

Sub autofitCell()
  Dim objSh As Worksheet
  Dim rng As Range
  Dim sngHeight As Single
  
  On Error GoTo ErrExit
  Application.ScreenUpdating = False
  Application.DisplayAlerts = False
  
  Set rng = ActiveSheet.Range("E19")
  Set objSh = ThisWorkbook.Worksheets.Add(after:=ActiveSheet)
  rng.Copy objSh.Cells(1, 1)
  objSh.Cells(1, 1).EntireRow.AutoFit
  sngHeight = objSh.Rows(1).RowHeight
  objSh.Delete
  rng.EntireRow.RowHeight = sngHeight
  rng.Parent.Activate
  
  ErrExit:
  Application.ScreenUpdating = True
  Application.DisplayAlerts = True
  Set objSh = Nothing
  Set rng = Nothing
End Sub



Gruß Sepp



  

Betrifft: Super Sepp, danke :-) von: Joachim
Geschrieben am: 05.01.2010 22:29:58




  

Betrifft: AW: Optimale Zeilenhöhe für einzelne Zelle von: Joachim
Geschrieben am: 07.01.2010 08:38:05

Hallo Sepp,

habe gerade bemerkt, das dein Beispiel aber nur funktioniert, wenn innerhalb der Zelle bedingte Zeilenumbrüche (alt+enter) sind.
gibt es mal einen Zeilenumbruch , der aufgrund der Überlänge stattfindet, funktioniert der Code nicht mehr.

Hier mal ein Beispiel

https://www.herber.de/bbs/user/67029.xls


Vielleicht mache auch ich was falsch.
danke


Joachim


  

Betrifft: AW: Optimale Zeilenhöhe für einzelne Zelle von: Josef Ehrensberger
Geschrieben am: 07.01.2010 08:57:07

Hallo Joachim,

dann so.

Private Sub CommandButton1_Click()
  Dim objSh As Worksheet
  Dim rng As Range
  Dim sngHeight As Single, sngZoom As Single
  
  On Error GoTo ErrExit
  Application.ScreenUpdating = False
  Application.DisplayAlerts = False
  sngZoom = ActiveWindow.Zoom
  Set rng = ActiveSheet.Range("D1")
  Set objSh = ThisWorkbook.Worksheets.Add(after:=ActiveSheet)
  rng.Copy objSh.Cells(1, 1)
  ActiveWindow.Zoom = sngZoom
  objSh.Columns(1).ColumnWidth = rng.ColumnWidth
  objSh.Rows(1).AutoFit
  sngHeight = objSh.Rows(1).RowHeight
  objSh.Delete
  rng.EntireRow.RowHeight = sngHeight
  rng.Parent.Activate
  
  ErrExit:
  Application.ScreenUpdating = True
  Application.DisplayAlerts = True
  Set objSh = Nothing
  Set rng = Nothing
End Sub




  

Betrifft: AW: Optimale Zeilenhöhe für einzelne Zelle von: Joachim
Geschrieben am: 07.01.2010 13:36:45

Hallo Sepp,

Vielen Dank. NUr noch ein kleine Bitte:

ich habe hier ein Beispiel mit Deinem aktuellen Code. Ich habe nun folgenden Problem, wobei ich nicht weis, ob dies nur lokal bei mir auftritt.

Mach mal bitte die excel auf und teste mal bitte.

In der Mappe sind 2 Beispiele:
das erst zum anpassen der Zeilenhöhe der Spalte A
das zweite zum anpassen der Zeilenhöhe der Spalte B

Teste mal zuerst den Button in der B Spalte, da scheint alles iO zu sein.
Wenn Du nun die erste Spalte (A) testest, ist es zumindes bei mir so, dass Excel automatisch vor den Text noch eine leere Zelle einfügt. Ich habe mal ein bischen getestet und meine , das Problem ist folgendes:

Wenn man mit dem Text , bedingt durch die länge; dummerweise bis an den Rand der Spaltenbreite kommt, fügt Excel diese Zeile ein. Liegt man dagegen leicht drunter oder drüber, also das es vom letzten Zeichen bis zum rechten Rand der Spalte vielleicht so 2 mm platz hat oder man so ca,. 2mm drüber liegt, dann tritt der Effekt nicht auf.

Also anders gesagt, gibt es bei einer Zell mit mehrerern Zeilen inhalt eine Zeile, die genauso lang ist, wie die Spaltenbreite, wird diese Zeile zusätzlich von Excel eingefügt.
(Ich habe in der B Spalte ein Zeichen hinten entfernt, damit ich nicht mehr den rechen Rand berühre)

Tritt dieser Effekt bei Dir auch auf, ist das ein generelles Problem von excel ??

Kannst Du das mal bitte testen.
Wäre nett.

https://www.herber.de/bbs/user/67038.xls


Danke

Joachim


  

Betrifft: AW: Optimale Zeilenhöhe für einzelne Zelle von: Josef Ehrensberger
Geschrieben am: 07.01.2010 21:13:57

Hallo Joachim,

das ist so und lässt sich, meines Wissens, auch nicht ändern.

Excel ist und bleibt nunmal ein Tabellenkalkulationsprogramm und keine Textverarbeitung.


Gruß Sepp



  

Betrifft: OK,dann kann man nichts machen, trotzdem Danke owT von: Joachim
Geschrieben am: 08.01.2010 20:58:48




Beiträge aus den Excel-Beispielen zum Thema "Optimale Zeilenhöhe für einzelne Zelle"