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

P: Excel 2003 VBA: Als Text formatierte Zahl in Uahl umwandeln

462 views
Skip to first unread message

Martin Jaeger

unread,
Jan 22, 2008, 9:57:01 AM1/22/08
to

Hallo,

in einer Tabelle habe ich Nummern mit führenden Nullen die als Text in den
Zellen stehen.
Durch ein kleines grünes Dreieck und ein Symbol mit "!" wird mit dies als
"Fehler" angezeigt. Ich habe hier die Möglichkeit die Inhalte in eine Zahl
umzuformatieren.

Kann ich diese Option auch per VBA aufrufen? Wenn ich die Zelle einfach
nur um-formatiere, auch als Zahl, dann ändert sich nichts an dem Problem,
und "Makro aufzeichnen" geht in dieser Situation leider auch nicht.

Vielen Dank und Viele Grüße

Martin

Peter Schleif

unread,
Jan 22, 2008, 10:46:24 AM1/22/08
to
On 22 Jan., 15:57, "Martin Jaeger" <keinep...@keinepost.xyz> wrote:
>
> in einer Tabelle habe ich Nummern mit führenden Nullen die als Text in den
> Zellen stehen.

Du musst in VBA das Format umstellen *und* dann die Zahl nochmal in
die Zelle schreiben. Etwa so:

[A1].NumberFormat = "General"
[A1] = Val([A1])

Peter

Martin Jaeger

unread,
Jan 22, 2008, 11:03:09 AM1/22/08
to
Am 22.01.2008, 16:46 Uhr, schrieb Peter Schleif
<peter.sch...@gmx.de>:


> Du musst in VBA das Format umstellen *und* dann die Zahl nochmal in
> die Zelle schreiben. Etwa so:
>
> [A1].NumberFormat = "General"
> [A1] = Val([A1])

Ui, bei ca 2000 Zeilen 4 Spalten ist das vielleicht ein wenig zu
Zeitaufwendig, gibt es ein schnelleres Verfahren?

Peter Schleif

unread,
Jan 22, 2008, 11:17:41 AM1/22/08
to
On 22 Jan., 17:03, "Martin Jaeger" <keinep...@keinepost.xyz> wrote:
>
> Ui, bei ca 2000 Zeilen 4 Spalten ist das vielleicht ein wenig zu
> Zeitaufwendig, gibt es ein schnelleres Verfahren?

For zeile = 1 To 2000
For spalte = 1 To 4
If Trim(Cells(zeile, spalte)) <> "" Then
Cells(zeile, spalte).NumberFormat = "General"
Cells(zeile, spalte) = Val(Cells(zeile, spalte))
End If
Next
Next

Denk dran, vorher dass "," durch ein "." zu ersetzen, falls Du
"deutsche" Dezimal-Zahlen als Text hast.

Peter

Martin Jaeger

unread,
Jan 22, 2008, 11:25:18 AM1/22/08
to
Am 22.01.2008, 15:57 Uhr, schrieb Martin Jaeger <kein...@keinepost.xyz>:

Im Prinzip steht da nur ein Apostroph davor, daher passt er die Zahl nicht
an. Kann an das irgendwie ohne lesen und neu schreiben entfernen?


Wolfgang Habernoll

unread,
Jan 22, 2008, 11:46:15 AM1/22/08
to
Hallo Martin

"Martin Jaeger" <kein...@keinepost.xyz> schrieb im Newsbeitrag
news:op.t5b9j...@lapmkr.dus.fact.prv...

muß es VBA sein? so ginge es auch recht schnell

- schreibe in irgendeine Zelle eine 1 und kopiere diese
- markiere deinen Bereich bzw. auch gleich die ganzen 4-Spalten
- rechter Mausklick -> Inhalte einfügen ->Vorgang multiplizieren
- Ok

--
mfG
Wolfgang Habernoll

[ Win XP Home SP-2 , XL2002 ]


Thomas Ramel

unread,
Jan 22, 2008, 12:03:19 PM1/22/08
to
Grüezi Martin

Martin Jaeger schrieb am 22.01.2008

*Muss* es denn ein Makro sein?

- Spalte markieren
- Format 'Standard' oder 'Zahl' vergeben
- Spalte weiterhin markiert lassen
- Menü: 'Daten'
- Text in Spalten
- [Fertig stellen]

Das müsste reichen um die Daten in berechenbare Werte umzuwandeln.


Mit freundlichen Grüssen
Thomas Ramel

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

Martin Jaeger

unread,
Jan 23, 2008, 6:36:24 AM1/23/08
to
Am 22.01.2008, 17:17 Uhr, schrieb Peter Schleif
<peter.sch...@gmx.de>:

> ...

Danke für die Hilfe.

Ich lade jetzt jeden Wert und schreibe ihn neu. Mal schauen wie lange das
dann mit Echtdaten dauert.

Viele Grüße

Martin

Peter Schleif

unread,
Jan 23, 2008, 7:02:11 AM1/23/08
to
>
> Ich lade jetzt jeden Wert und schreibe ihn neu. Mal schauen wie lange das
> dann mit Echtdaten dauert.

8000 Zellen dauern bei mir 2,565 Sekunden (Centrino 1,8 DualCore)


Private Declare Function GetTickCount Lib "kernel32" () As Long

Sub test()

ticks = GetTickCount

For zeile = 1 To 2000
For spalte = 1 To 4
If Trim(Cells(zeile, spalte)) <> "" Then
Cells(zeile, spalte).NumberFormat = "General"

Cells(zeile, spalte) = Val(Replace(Cells(zeile, spalte),
",", "."))
End If
Next
Next

MsgBox ((GetTickCount - ticks) / 1000)

End Sub

0 new messages