Anzeige

 [VBA] Char aus String auslesen


mc_gulasch

Erfahrenes Mitglied
#1
Aloah Forum,

fast schäm ich mich für die Frage, aber:

Wie greif ich auf ein bestimmtes Zeichen in einem String mittels VBA zu?

string(i) geht ja irgendwie nicht und sonst find ich nur Vergeliche, Replaces, lefts, rights, ... :-(
 

mc_gulasch

Erfahrenes Mitglied
#3
Sorry, aber es ist VBA. Hier werden die Zugriffe auf Arrays tatsächlich mit "()" gemacht (so hässlich es auch ist ;) ) und string[ i ] kennt / mag / will / firsst er nicht.
 

deepthroat

Erfahrenes Mitglied
#4
Hi.

Ein String ist in VB(A) aber kein Array.

Außerdem gibt es in VB(A) auch keinen Char Typ. Alles sind Strings; ein Zeichen ist ein String der Länge 1.

Für Strings gibt es die Funktion Mid bzw. Mid$
Visual Basic:
Dim char As String

char = Mid$("abcdefg", 2, 1)
Zu beachten ist, das die Zählung hier bei 1 beginnt. Die Variable char hat also den Wert "b".

Gruß
 

mc_gulasch

Erfahrenes Mitglied
#6
Das mit den Arrays hab ich mir schon fast gedacht. Die Funktion Mid hab ich auch im Objektkatalog gefunden, aber dem aufgrund der (dürftigen) Beschreibung eher weniger Aufmerksamkeit beigemessen. Wie dem auch sei, Gulasch sagt mal wieder Danke! So gehts jetzt.

//edit:
@ Yanik
Tja, kann man nix machen. Aber bevor ich solche Stringoperationen mit C mach, rock ich lieber schnell händisch einmal mit Excel und VBA drüber. Nicht dass mir das Spass machen würde, aber es geht halt schneller ;)
 
Zuletzt bearbeitet:
#7
jaaa, das Thema ist alt, ich weiß... Aber vielleicht hilfts ja noch Jemandem :D

Visual Basic:
Sub upperCase(tb As MSForms.TextBox)
On Error GoTo fehl
Dim i, filter, c1, c2, txt, txt2, ln
txt = tb.Text
ln = Len(txt)
filter = "_-,. "

For i = 1 To ln
    c1 = ""
    If i > 1 Then c1 = Mid(txt, i - 1, 1)
    c2 = Mid(txt, i, 1)
    If InStr(1, filter, c1) > 0 Then
        txt2 = txt2 + Format(c2, ">")
    Else
        txt2 = txt2 + Format(c2, "<")
    End If
Next i
tb.Text = txt2

fehl:
End Sub
 
Anzeige

Neue Beiträge

Anzeige