Microsoft Excel

Herbers Excel/VBA-Archiv

Replace von Komma durch Punkt

Betrifft: Replace von Komma durch Punkt von: JanBro
Geschrieben am: 27.08.2004 11:09:00

Hallo Forum, ich habe hier etwas Quellcode der in Textfeldern ein Komma durch einen Punkt ersetzen soll:

Cells(i, ii).Select
Selection.Replace What:=",", Replacement:=".", MatchCase:=False
wert = Selection.Value

Dies ist nötig, da die Daten nachher in eine MySQL geschrieben werden. MySQL versteht aber wohl leider eine 12,7 nicht sondern nur 12.7. Das verrückte ist:
bei einigen Feldern funktioniert die Konvertierung, bei anderen nicht! Ich kann kein System darin erkennen. Da die Daten aus Excel nicht mehr verarbeitet werden müssen, hatte ich sie in Textfelder konvertiert und das ganze als String betrachtet, aber kein Erfolg.
Wie kann ich das vielleicht anders machen? Ein Mysql dump geht nicht, da die Daten vor dem Insert aufbereitet werden. Ich lasse in der Schleife jedes Feld gezielt über SQL Insert in die Mysql laufen.
Thx im voraus JanBro

  


Betrifft: AW: Replace von Komma durch Punkt von: nighty
Geschrieben am: 27.08.2004 15:11:26

hi JanBro :)

zwei varianten :)

erste arbeitet die ganze tabelle ab
zweite arbeitet eine vorausgesetzte markierung ab

die beiden makros sind nicht so optimal gestaltet ,da schon ein wenig aelter sind :))

gruss nighty


Sub makro01()
With Worksheet
Set LastCell = ActiveSheet.Cells.SpecialCells(xlLastCell)
alta = LastCell.Row
a = LastCell.Row
Do While Application.CountA(Rows(a)) = 0 And a <> 1
a = a - 1
Loop
alta = a
altb = LastCell.Column
b = LastCell.Column
Do While Application.CountA(Columns(b)) = 0 And b <> 1
b = b - 1
Loop
altb = b
lzeile = alta
lspalte = altb
For t% = 1 To lspalte
For t1% = 1 To lzeile
laenge% = Len(Cells(t1%, t%))
Cells(t1%, t%).Select
For t2% = 1 To laenge%
If t2% = 1 Then
Cells(t1%, t%).Select
Selection.NumberFormat = "@"
End If
If Mid$(Cells(t1%, t%), t2%, 1) = "," Then
lager$ = Mid$(Cells(t1%, t%), 1, t2% - 1) & "." & Mid$(Cells(t1%, t%), t2% + 1, laenge%)
aa = 1
Cells(t1%, t%) = lager$
End If
If Mid$(Cells(t1%, t%), t2%, 1) = "." And aa = 0 Then
lager$ = Mid$(Cells(t1%, t%), 1, t2% - 1) & "," & Mid$(Cells(t1%, t%), t2% + 1, laenge%)
Cells(t1%, t%) = lager$
End If
aa = 0
If t2% = laenge% Then
Cells(t1%, t%).Select
Selection.NumberFormat = "0.00"
End If
Next t2%
Next t1%
Next t%
End With
End Sub




Sub makro02()
With Worksheet
For t% = Selection.Column To Selection.Column + Selection.Columns.Count - 1
For t1% = Selection.Row To Selection.Row + Selection.Rows.Count - 1
laenge% = Len(Cells(t1%, t%))
For t2% = 1 To laenge%
Cells(t1%, t%).Select
Selection.NumberFormat = "@"
If Mid$(Cells(t1%, t%), t2%, 1) = "," Then
lager$ = Mid$(Cells(t1%, t%), 1, t2% - 1) & "." & Mid$(Cells(t1%, t%), t2% + 1, laenge%)
aa = 1
Cells(t1%, t%) = lager$
End If
If Mid$(Cells(t1%, t%), t2%, 1) = "." And aa = 0 Then
lager$ = Mid$(Cells(t1%, t%), 1, t2% - 1) & "," & Mid$(Cells(t1%, t%), t2% + 1, laenge%)
Cells(t1%, t%) = lager$
End If
aa = 0
Cells(t1%, t%).Select
Selection.NumberFormat = "0.00"
Next t2%
Next t1%
Next t%
End With
End Sub



  


Betrifft: AW: Replace von Komma durch Punkt von: JanBro
Geschrieben am: 27.08.2004 19:49:53

Danke für die Hilfe, ich habe mir die Befehlssätze herausgepickt die ich brauchte nun funktioniert alles. Danke
hier nun der neue code
If Cells(3, ii).Value = 3 Then
zeichenketteLaenge = Len(wert)
neuwert = ""

For iii = 1 To zeichenketteLaenge
bau = Mid(wert, iii, 1)
If bau = "," Then
neuwert = neuwert & "."
Else
neuwert = neuwert & bau
End If

Next iii
wert = neuwert