Du verstehst mich falsch
Das da oben hat nix mit Excel zu tun
Nein, das tue ich nicht.
by the way: die for-Schleife funktioniert in Excel übrigens wunderbar (natürlich ohne das zweite 'i =') und gehört eigentlich zum Standard dort, aber das mal nur ganz am Rande:p
und was heißt dieser Unsinn - das ich im Irrtum bin wenn ich falschen Code als solchen benenne, weil der Code eigentlich nicht falsch ist sondern richtig wenn man ihn ändert. Nee, ernsthaft, wenn ich schreibe:
ist das nicht eigentlich richtig und funktioniert wunderbar wenn ich nur das h streiche, sondern es ist zunächst einfach falsch.
Ich finde es nicht toll wenn ich eine falsche Code-Zeile
mit einem Zwinkern kommentiere und dann als Antwort zwischen den Zeilen lese das die ja 'eigentlich' nicht falsch ist und ich anscheinend von VBA keine Ahnung habe ... oder nimmst Du ernsthaft an ich hätte die Schleife ansich bemängelt - natürlich bezog sich das auf das zweite i =
Es ist jedoch zunächst genau diese falsch formulierte Schleife die Dein Makro nicht funktionieren läßt und nichts weiter.
Das Du statt .String .Value verwandt hast ist ein Detail was Du nicht wissen konntest, nur der eigentliche Fehler war die Schleifenformulierung.
Ich will mich hier nicht über Excel unterhalten, sondern mein Problem beseitigen
das ist völlig klar, nur warum postest Du einen nicht funktionierenden Code, wenn Du garnicht wissen willst wie der funktionieren würde - Nein, Du bist ja sogar darauf eingegangen:
Jedoch tut sich nix beim Ausführen des Makros
das hört sich dann aber schon so an als wenn Du zunächst wissen wolltest wie Du das Makro zu Laufen bringst.
Da ich das Makro nun hingeschrieben habe, hast Du genau das was Du brauchst und mußt nur statt Spalte "S" Spalte A bearbeiten, mehr StarBasic-Spezifisches ist nicht nötig, denn das:
Wie entferne ich nun alle Sonderzeichen aus dem String und das erste Zeichen?
funktioniert durch einfache Stringmanipulation wie auch in VBA möglich, da ist nichts Calc-Spezifisches.
Mithin beispielsweise insgesamt:
Code: Alles auswählen
Sub Main
Dim i As Integer
Dim row As Object
For i = 2 To 50
row = thisComponent.getCurrentController().getActiveSheet().getCellRangeByName("A" & i)
x = row.String
z = ""
For j = LEN(x) to 1 Step -1
y = RIGHT(x,j)
y1 = LEFT(y,1)
Select Case ASC(y1)
Case 48 To 57
y1 = y1
Case 65 To 90
y1 = y1
Case 97 To 122
y1 = y1
Case Else
y1 = ""
End Select
z = z & y1
Next j
thisComponent.getCurrentController().getActiveSheet().getCellRangeByName("A" & i).String = RIGHT(z, LEN(z)-1)
Next i
End Sub
wobei alles ab:
bis:
in VBA völlig gleich ginge, so das Dir dieser Teil überhaupt nicht hätte schwer fallen können (denn Du sagst ja wohl das Du VBA-Kenntnisse hast) und den Rest hatte ich ja bereits gepostet.
Gruß
Stephan