Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1064to1068
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
Inhaltsverzeichnis

Zeichen löschen

Zeichen löschen
31.03.2009 14:29:03
Michi
Hallo Ihrs,
ich habe letztens von jemandem eine VBA-Syntax erhalten, mit der man die Anzahl der Zeichen in einer Excel-Zelle festlegt. Ich habe nämlich das Problem, dass ich eine txt.-Datei erstellen muss, wo ein bestimmtes Format einzuhalten ist - nämlich genau 8 zeichen (wobei (-), (.) und ( ) ebenfalls als Zeichen gelten). Allerdings ist der Datenumfang von 6x43825 Zahlen so ziemlich mächtig, sodass ich mich verweigere hier Handarbeit zu betreiben.
Die Syntax die mir letztens gegeben wurde, kann allerdings nur für Zahlen mit weniger als 8 Zeichen verwendet werden, d.h. er hängt je nach Zeichenanzahl noch ein paar Nullen dran (vorher müssen die Zahlen in der Excel allerdings als "Text" formatiert werden):

Sub n()
Dim i As Long
For i = 1 To 43825
Select Case Len(Cells(i, 1))
Case 7
Cells(i, 1) = Cells(i, 1) & "0"
Case 6
Cells(i, 1) = Cells(i, 1) & "00"
Case 5
Cells(i, 1) = Cells(i, 1) & "000"
Case 4
Cells(i, 1) = Cells(i, 1) & "0000"
Case 3
Cells(i, 1) = Cells(i, 1) & "00000"
Case 2
Cells(i, 1) = Cells(i, 1) & "000000"
Case 1
Cells(i, 1) = Cells(i, 1) & "0000000"
End Select
Next
For i = 1 To 43825
Select Case Len(Cells(i, 2))
End Sub


Wenn nun allerdings Zahlen wie, z.B:
-8.256666666
vorkommen, werden diese nicht "umgewandelt".
Kennt jemand eine VBA-Syntax, womit man Zeichen quasi löschen kann (wichtig! es müssen nur die letzten Zeichen gelöscht werden)?
Grüße,
Michaela

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zeichen löschen
31.03.2009 14:51:55
D.Saster
Hallo,
wer hat dir den Code denn angedreht?

Sub n()
Dim i As Long
application.screenupdating=false
For i = 1 To 43825
cells(i,1)=left(cstr(cells(i,1)) &"00000000"
cells(i,2)=left(cstr(cells(i,2)) &"00000000"
cells(i,3)=left(cstr(cells(i,3)) &"00000000"
next
Application.screenupdating=true
End Sub


Gruß
Dierk

AW: Zeichen löschen
31.03.2009 15:56:46
Michi
Hallo Dierk,
vielen Dank für deine Hilfe,
leider funktioniert das noch nicht. Wenn ich den Code von dir übernehme, zeigt er mir einen Syntaxfehler an! Also hab hinter "00000000" noch eine Klammer gesetzt. Nun zeigt mir beim Ausführen an, dass Argument "Left" nicht optional ist!? Wenn ich statt dem "&" ein "," setze, dann löscht er aber alles.
Vielleicht kannst du noch mal drüber gucken.
Gruß,
Michi
Anzeige
AW: Zeichen löschen
31.03.2009 16:01:53
D.Saster
Hallo,
sorry
Cells(i, 1) = Left(CStr(Cells(i, 1)) & "00000000", 8)
Korrektur
31.03.2009 16:08:49
D.Saster

Sub n()
Dim i As Long
Application.ScreenUpdating = False
Columns("A:C").NumberFormat = "@"
For i = 1 To 43825
Cells(i, 1) = Left(CStr(Cells(i, 1)) & "00000000", 8)
Cells(i, 2) = Left(CStr(Cells(i, 2)) & "00000000", 8)
Cells(i, 3) = Left(CStr(Cells(i, 3)) & "00000000", 8)
Next
Application.ScreenUpdating = True
End Sub


AW: Korrektur
01.04.2009 09:34:04
Michi
Hey Dierk,
das funktioniert ganz gut. Hab aber noch das Problem, dass er bei ganzen Zahlen ausschließlich die Nullen dranhängt:
aus 652 wird 65200000
aus 12 wird 12000000
aus 5 wird 50000000
Kann man das Problem noch beheben?
Gruß, Michi
Anzeige
AW: Korrektur
01.04.2009 11:40:32
D.Saster
Hallo,
soll das zu 652,0000 12,00000 etc. werden?
Gruß
Dierk
AW: Korrektur
01.04.2009 14:41:19
Michi
Hey Dierk,
ja, nur dass das ich einen Dezimalpunkt habe und kein Dezimalkomma.
Gruß,
Michi
AW: Korrektur
01.04.2009 15:05:37
D.Saster
Hallo,
so?

Sub n()
Dim i As Long, j As Long
Application.ScreenUpdating = False
Columns("A:F").NumberFormat = "@"
For i = 1 To 43825
For j = 1 To 6
If Cells(i, j)  "" Then
If Int(Cells(i, j) * 1) = Cells(i, j) * 1 Then
Cells(i, j) = Left(Cells(i, j) & ".00000000)", 8)
Else
Cells(i, j) = Left(CStr(Cells(i, 1)) & "00000000", 8)
End If
End If
Next j
Next i
Application.ScreenUpdating = True
End Sub


Gruß
Dierk

Anzeige
AW: Korrektur
02.04.2009 09:28:19
Michi
Hallo Dierk,
vielen danke, dass du immer noch am Ball bleibst. Ist ja nicht selbstverständlich ;o)
Ob der Code funktionert weiß ich leider noch nicht. Er gibt mir für die Zeile
If Int(Cells(i, j) * 1) = Cells(i, j) * 1 Then
eine Laufzeitfehler '13': Typen unverträglich aus!?
Und müsst für die Zeile nach dem Else statt Cells(i, 1) nicht Cells(i, j) stehen?
Gruß,
Michi

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige