Anzeige
Archiv - Navigation
272to276
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
272to276
272to276
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Wieder mal: Punkt - Komma

Wieder mal: Punkt - Komma
26.06.2003 08:33:28
Megatron (Jens)
Guten Morgen,
ich weiss jetzt werden einige sagen, dass das schon tausendmal besprochen wurde (ich kenne wahrscheinlich selbst an die 20 Beiträge), aber diesmal ist es irgendwie anders!

Ich importiere in den verschiedensten Arbeitsblättern Daten aus externen Quellen. In diesen Quellen sind die Zahlen mit Punkten versehen (auch meine Ausgabedatei braucht diese), allerdings kommt Excel damit nach dem Import nicht klar.
Folgender Teil meines Makros soll dieses Problem lösen:

Sheets(1).Select
Range("B31").Activate
Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select

Application.CutCopyMode = False
Selection.NumberFormat = "@"
Selection.Replace What:=".", Replacement:=",", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False
Selection.NumberFormat = "0.0"

Wenn ich dieses Verfahren von Hand aufzeichne/ausführe funktioniert es wunderbar; aber nicht wenn ich das Makro selbst starte. Der markierte Zelbereich umfasst ca. 300 * 300 Zellen.

Nur um es zu verdeutlichen:
Das Makro läuft ab (ohne Fehler), aber die Umwandlung erfolgt nicht richtig. Die Zellen sind zwar dann als Zahlen formatiert, der Zellinhalt wird aber nicht richtig erkannt.
Ab und zu wird die erste Zelle richtig ausgeführt, dann wird mir allerdings ein Zirkelbezug mitgeteilt (gibt überhaupt keinen Sinn!).

Ich wäre Euch sehr dankbar, wenn irgendjemandem eine praktikable Variante einfallen würde!

Gruß
Jens

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Nachtrag
26.06.2003 08:38:55
Megatron (Jens)

Ich habe noch etwas interessantes festgestellt.
Wenn ich in die Zeile gehe, den Kurser ins Eingabefeld setze und dann Return drücke wird die Zelle auf einmal richtig erkannt. Kann ich sowas notfalls automatisieren? (Notfallplan)
(Das mit dem Zirkelbezug hat sich erledigt; mein Fehler!)

Gruß
Jens

Re: Wieder mal: Punkt - Komma
26.06.2003 08:40:01
Michael Scheffler

Hi,

warum ersetzt Du nicht Punkt durch Komma und nach der Bearbeitung vice versa? Da ist am einfachsten innerhalb der Ursprungsdatei. Wenn es viele sind, dann kannst Du Dir ja ein Script schreieben, dass die Daten Zeile für Zeile einliest, mit Replace die Kommas ersetzt und dann wieder rausschreibt.

Das Importproblem wurde hier schon min. 100 Mal (nicht 20) beschrieben, woran es liegt, weiß keiner.

Gruß

Micha


Anzeige
Re: Wieder mal: Punkt - Komma
26.06.2003 08:44:37
Megatron (Jens)

Hallo Micha,
wie Du vielleicht an meinem Code siehst ersetzte ich das schon automatisch!

Aber es geht nicht!!!

Es funktioniert aus irgendeinem unerfindlichen Grund nur von Hand!
In den Urdprungsdateien kann ich nichts verändern, da diese in "Realtime" aktualisiert werden. Ich ziehe mir also einen bestimmten Zeitpunkt. Beim import kann ich auch nicht 300 Spalten zuweisen, dass sie Text sind, zumindest nicht ohne komplett am Rad zu drehen.

Gruß
Jens

Re: Wieder mal: Punkt - Komma
26.06.2003 09:04:46
RAnton

Hallo Jens,

ich habe folgendes bei mir gemacht.

Also: den Berich, den ich umwandeln will erst mal ins Text-Format gestellt.
Dann mit folgendem Code die Umwandlung vorgenommen.

Danach kannst du den Bereich wieder ins Zahlenformat umstellen.


Sub test(rngA As Range)
Dim cell As Range
rngA.NumberFormat = "@"
For Each cell In rngA
cell.Value = Val(cell.Value)
Next
rngA.NumberFormat = "0.0"
End Sub

Danach habe ich alle Zahlen wie gewohnt.


Gruß
RAnton

Anzeige
Re: Wieder mal: Punkt - Komma
26.06.2003 09:28:11
Megatron (Jens)

Morgen RAnton,
ich sehe zwar nicht den großen Unterschied zu meiner Variante, ich werde es aber trotzdem ausprobieren.

Allerdings ist mir die Stelle rngA nicht ersichtlich. Das muss ja vorher irgendwie definiert worden sein, oder ist das ein fester Begriff?
Ist das auch ein range?

Danke für Deine Hilfe
Jens

Re: Nachtrag
26.06.2003 09:38:53
Daniel P

Hallo Jens,

sowas kann man 'simulieren', indem man alle Zellen im Bereich durchgeht, und mit sich selbdt überschreibt:

For each oCell in oRange
ocell.Value=oCell.Value
Next oCell

Vielleicht hilft Dir aber auch folgender Trick:
Excel kapiert manchmal nicht, dass es mit numerischen Werten zu tun hat, auch wenn es Zahlen sind und die Zelle als Zahl formatiert ist. Dann kann man alle Zellen mit dem Wert 1 multiplizieren, um das klar zu machen.

ocell.Value=oCell.Value*1

Kommt etwa auf's selbe raus wie der Trick oben.

Daniel

Anzeige
Re: Nachtrag
26.06.2003 09:55:33
Megatron (Jens)

Danke Daniel,
was soll das ocell sein?

Da gibt mir Excel einen Fehler aus.
Sorry mich heute früh irgendwie im Kreis! Ich komme einfach selbst nicht darauf.

Gruß
Jens

Re: Nachtrag
26.06.2003 10:06:49
Daniel

Hallo Jens,

oCell ist eine Objektvariable vom Typ Range, die die jeweiligen einzelnen Zellen repräsentiert. Du musst Sie natürlich mit
'Dim oCell as Range' vorher deklarieren (genauso wie oRange)


Re: Nachtrag
26.06.2003 10:29:36
Megatron (Jens)

Alles klar,
hatte ich mir doch richtig gedacht!

Bastle hier gerade an mehreren Problemen - das sollte man einfach nicht!

Herzlichen Dank noch mal!

Gruß
Jens

Re: Nachtrag
26.06.2003 13:09:29
Michael Scheffler

Hallo Jens,

wie gesagt, das Problem wurde hier schon bis zum Erbrechen geschildert, warum es nun per Hand geht und mit Makro nicht. Ich habe Dir einen Lösungsansatz gegeben, der immer geht, egal welche Art Datei es ist.

Gruß

Micha

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige