Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Positionen von Leerzeichen bestimmen
#1
Hallo liebes Forum,

ich habe bei einem String  eine Positionsangabe vorgegeben.

Wie in folgendem Code:
Code:
Sub Wort_durch_Leerzeichen_ersetzen()
Dim vbSatz, vbErsatz, vbPos,vbPosR, vbPosL
vbPos = 14
vbSatz = "Heute ist wunderbares Wetter und ich gehe zum Strand."

vbPosL = vbPos
While Not Mid(vbSatz, vbPosL, 1) = " "
vbPosL = vbPosL - 1
Wend

Debug.Print "Leerzeichen links bei Position: " & vbPosL

vbPosR = vbPos
While Not Mid(vbSatz, vbPosR, 1) = " "
vbPosR = vbPosR + 1
Wend

Debug.Print "Leerzeichen rechts bei Position: " & vbPosR

End Sub

Die Positionsangabe ist hier mit vbPos = 14 angegeben. Das ist mitten in dem Wort "wunderbar". Jetzt möchte ich, die Position des ersten Leerzeichens links und rechts von diesem Wort bestimmen,
z.B. um über die Funktion Mid(vbSatz, vbPosLinks + 1, vbPosRechts - vbPosLinks) das Wort "wunderbar" selbst zu ermitteln. Klappt ja auch im obigen Beispiel. Kann man so etwas nicht
wesentlich besser lösen als mit 2 while Schleifen?
Antworten Top
#2
Hallo VBATartar,
geht schon, aber ist nicht kürzer:
Sub Wort()
Dim vbPos, vbSatz, vbErg, i, erg
  vbPos = 14
  vbSatz = "Heute ist wunderbares Wetter und ich gehe zum Strand."
  erg = vbSatz 'falls kein Leerzeichen
  i = InStrRev(Left(vbSatz, vbPos), " ")
  If i = 0 Then Exit Sub 'falls kein nachfolgendes Leerzeichen
  erg = Mid(vbSatz, i + 1)
  i = InStr(1, erg, " ") 'Pos. nachfolgendes Leerzeichen
  If i > 0 Then erg = Left(erg, i - 1)
End Sub


VBA/HTML-CodeConverter, AddIn für Office 2002-2016 - in VBA geschrieben von Lukas Mosimann. Projektbetreuung:RMH Software & Media

Code erstellt und getestet in Office 14 - mit VBAHTML 12.6.0

Gruß der AlteDresdner
Gruß der AlteDresdner (Win11, Off2021)
Antworten Top
#3
Das Wort wunderbares läßt sich wunderbar so bestimmen:

Debug.Print Split(vbSatz)(UBound(Split(Left(vbSatz, vbPos))))
Antworten Top
#4
@Danke Quantum. Ein Quanten(um) sprung für mich!
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste