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

Per Makro ermitteln, ob ##### in Zelle angezeigt wird, wenn Zahl zu lang für Zellbreite ist

47 views
Skip to first unread message

Thomas Siewert

unread,
Jun 22, 2003, 10:26:56 AM6/22/03
to
Hallo,

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.


Melanie Breden

unread,
Jun 22, 2003, 11:52:24 AM6/22/03
to
Hallo Thomas,

"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]

Thomas Siewert

unread,
Jun 22, 2003, 2:52:06 PM6/22/03
to
Hallo Melanie,

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


Melanie Breden

unread,
Jun 22, 2003, 4:13:44 PM6/22/03
to
Hallo Thomas,

"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 :-)

Franz Pölt

unread,
Jun 22, 2003, 5:25:52 PM6/22/03
to
Hallo Thomas!

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...

Thomas Siewert

unread,
Jun 23, 2003, 10:31:10 AM6/23/03
to
Hallo Franz,

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.

0 new messages