Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Zellen werden nicht als Zahl erkannt

Zellen werden nicht als Zahl erkannt
Holger,
Hallo liebes Forum,
mit unten stehendem Makro lese ich eine csv Datei in eine Tabelle ein.
Dabei wird die Zelle auch als Text formatiert.
Dennoch werden die Zellen nicht als Zahl erkannt, denn Summen gehen nicht
und wenn ich mehrere Zellen markiere, kommt unten in der Statusleiste auch nicht die
Summe, sondern lediglich die Anzahl der markierten Zellen.
Mir ist das am Anfang nicht aufgefallen, weil ich diese Prüfung ausgeschaltet habe (siehe zweites Makro),
aber es erscheint ein gelbes Ausrufezeichen mit der Meldung "Zahl als Text formatiert oder Apostroph vorangestellt". Rechtsklick auf die Zelle ist aber Zahl mit 0 Nachkommastellen eingestellt.
Was also mache ich falsch? In dem csv file gibt es Text und Zahlenfelder, die ich später in
der Tabelle mit Numberformat formatiere, aber das bringt anscheinend nichts.
In dem CSV Import kann ich leider nicht beeinflussen welche Spalte mit welcher
Formatierung eingelesen wird, also setze ich immer das Format auf Zahl.
Kann bitte jemand helfen?
Private Function ReadfromCSVSimple(WS As Worksheet, fname As String, Optional FS As String = ";" _
_
)
Dim hfile As Integer ' Filehandle bzw. Dateinummer
Dim i As Long ' Zähler über alle Zeilen
Dim OneLine As String ' Eine Zeile als String
Dim myArr As Variant ' eine Zeile in Felder getrennt
hfile = FreeFile
Open fname For Input As #hfile
While Not EOF(hfile)
i = i + 1
Line Input #hfile, OneLine
myArr = Split(OneLine, FS)
With WS.Range(WS.Cells(i, 1), WS.Cells(i, 1 + UBound(myArr)))
.NumberFormat = "0"
.Value = myArr
End With
Wend
Close #hfile
End Function

Sub ApplicationSettings(ByVal blnSwitch As Boolean)
Application.ErrorCheckingOptions.NumberAsText = blnSwitch
Application.ErrorCheckingOptions.BackgroundChecking = blnSwitch
Application.ErrorCheckingOptions.EmptyCellReferences = blnSwitch
Application.ErrorCheckingOptions.EvaluateToError = blnSwitch
Application.ErrorCheckingOptions.InconsistentFormula = blnSwitch
Application.ErrorCheckingOptions.ListDataValidation = blnSwitch
Application.ErrorCheckingOptions.OmittedCells = blnSwitch
Application.ErrorCheckingOptions.UnlockedFormulaCells = blnSwitch
Application.ErrorCheckingOptions.TextDate = blnSwitch
End Sub
Das ist der Fehler; hier schon Tsde Male...
13.12.2010 12:05:47
Luc:-?
…behandelt, Holger…
Zitat: Dabei wird die Zelle auch als Text formatiert.
Gruß Luc :-?
Nein, nein, das war ein Tippfehler
13.12.2010 12:10:33
Holger,
Hallo Luc,
es sollte natürlich heissen, als ZAHL formatiert.
Die Zeile ist ja auch in dem Makro zu sehen.
.NumberFormat = "0"
Das komische ist, wenn ich mit dem Ausrufezeichen auf Zahl konvertieren gehe,
dann klappt es. Aber das lässt sich mit dem Makrorecorder nicht nachvollziehen,
denn da erscheint nur ein Select.
Kannst du mir bitte nochmal auf die Sprünge helfen?
Ich habe die Hilfe schon gelesen, aber so einen Fall gab es anscheinend im Forum noch nicht.
Gruß+Dank
Holger
Anzeige
AW: Nein, nein, das war ein Tippfehler
13.12.2010 12:26:24
Renee
Hi,
aber so einen Fall gab es anscheinend im Forum noch nicht.
LOL : ...wie Luc sagte, zu 1000nden...
Aus einem Split-Array vom Typ String! wird nicht automatisch eine Zahl!
Fügeein:
...
.NumberFormat = "0"
.Value = .Value
...

GreetZ Renée
AW: Nein, nein, das war ein Tippfehler
13.12.2010 12:50:05
Holger
Hi rene,
Also mit csv import habe
Ich nichts gefunden!?
Ich dachte ja schon anstatt
String variant zu benutzen,
Aber
Nur der ganze Split-Ausdruck ist ein Variant,...
13.12.2010 13:00:51
Luc:-?
…die Einzelelemente immer unveränderbar Text (Variant-Untertyp String), Holger;
und Text bleibt Text, da kannst du höchstens in der Zelle multiplizieren wie Rudi es vorschlägt oder du lädst jedes Element in ein Element eines normalen Feldes numerischen Typs → dabei Konvertierung mittels CDbl bzw CLng nicht vergessen!
Gruß Luc :-?
Anzeige
Was ist mit .Value = .Value ? (owT)
13.12.2010 13:07:30
Renee

Könnte ja auch klappen; vergessen, pardon! orT
13.12.2010 14:05:18
Luc:-?
Wie konnt'ich nur dein' Beitrag vergessen… ;-)
Gruß Luc :-?
Klappt auch, DANKE
13.12.2010 16:09:05
Holger,
Hallo,
.value = .value klappt auch.
Schöner wäre es dennoch wenn ich für jede Spalte die richtige
Formatierung hätte. Jetzt sind Textspalten als Zahl formatiert.
Daher werde ich doch auch mal die andere Lösung testen.
Was ist, die RICHTIGE Formatierung? (owT)
13.12.2010 16:23:40
Renee

AW: Nur der ganze Split-Ausdruck ist ein Variant,...
13.12.2010 13:32:58
Holger
Ok, ich schreibe vim iphone aus und teste rudis
Vorschlag später daheim
Leider hängt sich das iphone
Dauernd auf, das nervt.
AW: Das ist der Fehler; hier schon Tsde Male...
13.12.2010 12:27:50
Rudi
Hallo,
1. macht man sowas als Sub.
2. ein Text ist ein Text, auch wenn er wie eine Zahl aussieht. Daran ändert auch das Zellformat nichts.
Teste mal:
Private Sub ReadfromCSVSimple(WS As Worksheet, fname As String, Optional FS As String = ";")
Dim hfile As Integer ' Filehandle bzw. Dateinummer
Dim i As Long ' Zähler über alle Zeilen
Dim OneLine As String ' Eine Zeile als String
Dim myArr As Variant ' eine Zeile in Felder getrennt
Dim Tmp
hfile = FreeFile
Open fname For Input As #hfile
While Not EOF(hfile)
i = i + 1
Line Input #hfile, OneLine
myArr = Split(OneLine, FS)
For Each Tmp In myArr
If IsNumeric(Tmp) Then Tmp = Tmp * 1
Next
With WS.Range(WS.Cells(i, 1), WS.Cells(i, 1 + UBound(myArr)))
.NumberFormat = "0"
.Value = myArr
End With
Wend
Close #hfile
End Sub

Gruß
Rudi
Anzeige

270 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige