# Excel 2007 Zellenbreite automatisch anpassen



## Lucius (4. Mai 2011)

Hallo zusammen,

ich stehe vor folgendem Problem.

Ich bin dabei eine Excel Liste, mit mehreren Tabellenblättern,  aufzubauen welche ein Arbeitszeugnis/Zwischenzeugnis per Dropdown und klick zusammenstellt.

Tabelle 1 beinhaltet Persönliche Daten und Bewertungen
Tabelle 2 soll das fertige Zeugnis auswerfen
Tabelle 3 liefert die verschiedenen Inhalte der Aufgaben und Positionen

Nun gibt es ja diverse Nach- und Vornamen und diese sind natürlich auch unterschiedlich lang.

Gibt es in Excel eine Möglichkeit der Zelle welche die Formel beinhaltet "hol dir den Namen aus Tabelle 1" zu sagen pass Dich auch der entsprechenden Größe an?

Vielen Dank für Eure Hilfe schonmal im voraus.

Gruß Lucius


----------



## tombe (4. Mai 2011)

Excel selber hat hierfür nach meinem Wissen keine Funktion.

Hier habe ich aber was gefunden womit du dein Problem lösen kannst.

Den Code einfach kopieren und in ein Modul einfügen. Wenn du dann die Funktion "GetTxtPxLen" mit dem entsprechenden Text als Parameter aufrufst, erhältst du die Textbreite in Pixel als Rückgabewert.

Das noch ein bisschen anpassen und du kannst damit die Breite der Spalte einstellen.


----------



## Lucius (4. Mai 2011)

Vielen Dank für die schnelle Antwort.

Leider habe ich mich mit VB oder Java noch nie beschäftigt aber irgendwann ist ja immer das erste mal  

Mal schauen wie ich das hinbekomme.

Du schreibst das ich damit die Breite der Spalte einstellen kann, heißt das die ist dann fest eingestellt die Breite? 
Weil ich möchte ja das sich die Zelle dann dem Ergebnis der Formel anpasst. 
Also bei dem Ergebnis "Müller" muss die Zelle natürlich kleiner sein als bei dem Ergebnis "Tucholski"


----------



## tombe (4. Mai 2011)

Ich habe gerade ein bisschen damit herumprobiert und dabei eine wesentlich einfachere Art gefunden.

Geh in den VBA Editor, rufe dort das Change Ereignis für die Tabelle auf und gib den unten stehenden Code ein



```
Private Sub Worksheet_Change(ByVal Target As Range)

Target.Range(Target.Address).Columns.AutoFit

End Sub
```

That´s all.

Das einzige was du da jetzt vielleicht noch machen musst ist, das du prüfst welche Spalte/Zelle das Ereignis aufruft. Sonst werden alle Spalten damit "optimiert" was nicht unbedingt korrekt sein muss.


----------

