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.

Sonderzeichen soll alle Leerzeichen in einem String durchlaufen
#11
Hi,

(10.02.2016, 17:59)coemm schrieb: hat sie!

ok, dann entschuldige ich mich!
Antworten Top
#12
Hallo mal wieder!
Zitat:schon mal vielen Dank. Aber wie sieht das Ganze aus wenn ich die einzelnen Werte mit Debug.print angeben will. 

Ich muss auch zugeben, dass ich mich Excelformeln nun so gar nicht auskenne.

Wäre aber nicht schlecht.  :21:
Peter hat Dir zwar bereits die "klassische" Variante gepostet, ich bin aber der Meinung, dass man Excelformeln auch in VBA nutzen sollte!
Da Du es ja gerne im Direktfenster haben willst:

Sub OderAnders()
Dim strSatz As String, iSpace As Long
strSatz = "Dies ist ein Satz, in dem ein Sonderzeichen nacheinander alle Leerzeichen durchläuft."
For iSpace = 1 To Ubound(Split(strSatz))
  Debug.Print WorksheetFunction.Substitute(strSatz, " ", "#", iSpace)
Next
End Sub

   

Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Antworten Top
#13
Code:
Sub LeerstellenimString(vbPosition, anzahl)
vbSonder = "#"
vbSatz = "Dies ist ein Satz, in dem ein Sonderzeichen nacheinander alle Leerzeichen durchläuft."

If Not vbPosition = 0 Then
Mid(vbSatz, InStr(vbPosition, vbSatz, " "), 1) = Replace(Mid(vbSatz, InStr(vbPosition, vbSatz, " "), 1), " ", vbSonder)
Debug.Print anzahl & ". = " & InStr(vbPosition, vbSatz, vbSonder) & " " & vbSatz '1
LeerstellenimString (InStr(vbPosition, vbSatz, " ")), anzahl + 1 '2 '3
End If

vbSatz = Replace(vbSatz, vbSonder, " ")
End Sub

Sub AlleLeerstellenimString()
Call LeerstellenimString(1, 1)
End Sub

Ansatz über rekursive Programmierung
[-] Folgende(r) 1 Nutzer sagt Danke an juliatoll für diesen Beitrag:
  • Schülerin
Antworten Top
#14
weiterer Lösungsvorschlag:
Code:
Sub A_SonderzeichenindieLeerstellen()
'Die Leerstellen werden nacheinander von einem Sonderzeichen durchlaufen
vbSonder = "#" 'Sonderzeichen
vbSatz = "Dies ist ein Satz, in dem ein Sonderzeichen nacheinander alle Leerzeichen durchläuft."

vbPosition = InStr(1, vbSatz, " ") 'Startwert
While Not vbPosition = 0
Mid(vbSatz, InStr(vbPosition, vbSatz, " "), 1) = Replace(Mid(vbSatz, InStr(vbPosition, vbSatz, " "), 1), " ", vbSonder)
Debug.Print "Position " & vbPosition & " : " & vbSatz
vbPosition = InStr(vbPosition + 1, vbSatz, " ")
vbSatz = Replace(vbSatz, vbSonder, " ")
Wend

End Sub
[-] Folgende(r) 1 Nutzer sagt Danke an juliatoll für diesen Beitrag:
  • Schülerin
Antworten Top
#15
Code:
Sub DurchlaufSonderzeichen()
vbSonder = "#"
vbSatz = "Dies ist ein Satz, in dem ein Sonderzeichen nacheinander alle Leerzeichen durchläuft."

For i = 1 To UBound(Split(vbSatz, " "))
vbPosition = InStr(vbPosition + 1, vbSatz, " ")
Debug.Print i & ". " & Left(vbSatz, vbPosition - 1) & vbSonder & Right(vbSatz, Len(vbSatz) - vbPosition)
Next i

End Sub
Antworten Top
#16
Code:
Sub M_snb()
    Debug.Print Join([transpose(substitute("Dies ist ein Satz, in dem ein Sonderzeichen nacheinander alle Leerzeichen durchläuft."," ","#",row(1:11)))], vbLf)
End Sub
[-] Folgende(r) 1 Nutzer sagt Danke an snb für diesen Beitrag:
  • Schülerin
Antworten Top
#17
Hallo SNB,

weiß zwar noch nicht ganz wie dein Code funktioniert, aber eine Super-Lösung! Dachte bisher immer der Königsweg wäre der von RPP63/Ralf (sicherlich leichter zu verstehen). Sei's drum.
Codealternativen sind immer interessant.
Antworten Top
#18
Dann gibt's noch eine Alternative ohne Excel Formel (weil 'substitute' eine Excel Formel ist):


Code:
Sub M_snb()
    sn = Split("Dies ist ein Satz, in dem ein Sonderzeichen nacheinander alle Leerzeichen durchläuft.")

    For j = 1 To UBound(sn)
      sn(j) = "#" & sn(j)
      Debug.Print Replace(Join(sn), " #", "#")
      sn(j) = Mid(sn(j), 2)
    Next
End Sub
[-] Folgende(r) 1 Nutzer sagt Danke an snb für diesen Beitrag:
  • Schülerin
Antworten Top


Gehe zu:


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