Textformatierung

22/11/2007 - 20:58 von Joachim Gohlke | Report spam
Hallo,

[kann sein, dass der Thread 2 x auftaucht, wegen
Übertragungsschwierugkeiten, sorry]

ich muss einen Zellbereich auf Zellformatierung untersuchen. Dazu benutze
ich die Characters-Eigenschaft der ActiveCell. Wenn die zu untersuchende
Zelle aber eine Zahl enthàlt, erscheint Laufzeitfehler '1004': 'Die
Count-Eigenschaft des Character-Objekctes kann nicht zugeordnet werden.' I.
A. benutze ich folgende Lösung:

If ActiveCell <> "" And IsNumeric(ActiveCell) Then
' Die Zahl wird durch Anfügen des Zeichens '&' in einen Text umgewandelt.
ActiveCell = "&" & ActiveCell
' Die Zelle auf 'Text' formatiert.
ActiveCell.NumberFormat = "@"
' und das Zeichen '&' wieder entfernt.
ActiveCell = Right(ActiveCell, Len(ActiveCell) - 1
End If

Jetzt glaubt Excel, der Zellinhalt wàre ein Text und die
Characters-Eigenschaft der ActiveCell greift wieder.

Kann man das nicht 'eleganter' lösen?

Grüsse

Joachim Gohlke
 

Lesen sie die antworten

#1 Thomas Ramel
22/11/2007 - 21:38 | Warnen spam
Grüezi Joachim

Joachim Gohlke schrieb am 22.11.2007

ich muss einen Zellbereich auf Zellformatierung untersuchen. Dazu benutze
ich die Characters-Eigenschaft der ActiveCell. Wenn die zu untersuchende
Zelle aber eine Zahl enthàlt, erscheint Laufzeitfehler '1004': 'Die
Count-Eigenschaft des Character-Objekctes kann nicht zugeordnet werden.' I.
A. benutze ich folgende Lösung:

If ActiveCell <> "" And IsNumeric(ActiveCell) Then
' Die Zahl wird durch Anfügen des Zeichens '&' in einen Text umgewandelt.
ActiveCell = "&" & ActiveCell
' Die Zelle auf 'Text' formatiert.
ActiveCell.NumberFormat = "@"
' und das Zeichen '&' wieder entfernt.
ActiveCell = Right(ActiveCell, Len(ActiveCell) - 1
End If

Jetzt glaubt Excel, der Zellinhalt wàre ein Text und die
Characters-Eigenschaft der ActiveCell greift wieder.

Kann man das nicht 'eleganter' lösen?



Hmm, versuche es mal wie folgt:

With ActiveCell
If .Value <> "" And IsNumeric(.Value) Then
.NumberFormat = "@"
.Value = .Text
End If
End With

Anstelle von ActiveCell kannst Du auch jedes andere Range-Objekt wie
Range(), oder Cells() verwenden.


Mit freundlichen Grüssen
Thomas Ramel

- MVP für Microsoft-Excel -
[Win XP Pro SP-2 / xl2003 SP-2]
Microsoft Excel - Die ExpertenTipps

Ähnliche fragen