ich fülle programmtechnisch ein Arbeitsblatt mit Zahlen, dessen
Mindestspaltenbreiten vorgegeben sind.
Ist eine Zahl nun zu lang, um in der Zelle dargestellt werden zu können,
zeigt Excel bekanntlich ###### an. Kann man die Zelle per VBA
überprüfen, ob dieser Darstellungswechsel stattgefunden hat, um dann
ggf. die Spaltenbreite zu vergrößern?
AutoFit funktioniert hier leider nicht, da die Spaltenbreite nicht unter
das Mindestmaß verringert werden darf, wenn die Zahl kürzer ist.
MfG, Thomas Siewert.
"Thomas Siewert" schrieb:
du könntest überprüfen, ob die Spaltenbreite durch AutoFit geringer ist
als die Mindestbreite und entsprechend reagieren:
Sub Spaltenbreite()
Dim iCol As Integer
Dim intMin As Integer
intMin = 5
For iCol = 1 To ActiveSheet.UsedRange.Columns.Count
With Columns(iCol)
.AutoFit
If .ColumnWidth < intMin Then .ColumnWidth = intMin
End With
Next iCol
End Sub
Kommst du damit weiter?
--
Mit freundlichen Grüßen
Melanie Breden
_____________________
[Microsoft MVP für Excel]
vielen Dank für Deinen Tip. Er hilft außerordentlich weiter.
Ich war so sehr darauf fixiert, eine vorhandene Excel-VBA-Eigenschaft
oder -Methode zu finden, daß ich auf so etwas naheliegendes nicht
gekommen bin.
Mit freundlichen Grüßen,
Thomas Siewert
"Thomas Siewert" schrieb:
> vielen Dank für Deinen Tip. Er hilft außerordentlich weiter.
>
> Ich war so sehr darauf fixiert, eine vorhandene Excel-VBA-Eigenschaft
> oder -Methode zu finden, daß ich auf so etwas naheliegendes nicht
> gekommen bin.
freut mich, dass dir der Tipp weiterhilft und danke für die Rückmeldung :-)
Mit diesem Makro wird die Spaltenbreite angepaßt, aber niemals verringert!
Public Sub MyAutoFit()
' paßt die Spaltenbreite nur an, wenn die Spalte dadurch breiter wird
Dim rngC As Range
Dim sngW As Single
For Each rngC In ActiveSheet.UsedRange.Columns.EntireColumn
With rngC
sngW = .ColumnWidth
.AutoFit
If .ColumnWidth < sngW Then .ColumnWidth = sngW
End With
Next
End Sub
mfG
Franz
"Thomas Siewert" <t.si...@gmx.de> schrieb im Newsbeitrag
news:bd4dvt$9ut$00$1...@news.t-online.com...
auch Dir besten Dank für die Lösung. Sie entspricht im wesentlichen der
von Melanie.
Inzwischen bin ich diesen Weg gegangen und muß leider feststellen, daß
das Auslesen der Daten aus der Datenbank, Eintragen in mehrere
Tabellenblätter und Formatieren derselben weniger Zeit beansprucht, als
das abschließende Korrigieren der Spaltenbreiten über die von Euch
gezeigte Methode mit AutoFit.
Die Zahlen, die eingtragen werden, sind in der Regel kleiner als die
Spaltenbreite und nur selten größer. Bei ca. sechs Tabellenblättern mit
jeweils zehn evtl. zu korrigierenden Spalten ist der Rechenaufwand daher
recht hoch, da ja meist die Spalten mit AutoFit verkleinert werden, um
sie dann wieder zurückzusetzen.
Ich hatte dies befürchtet und daher nach einer Möglichkeit gesucht, eine
Zelle darauf zu prüfen, ob der Darstellungswechsel stattgefunden hat
oder nicht. Leider scheint es keine solche zu geben.
Eure Lösung wird also ausreichen müssen. Besten Dank nochmals.