Sonderzeichen soll alle Leerzeichen in einem String durchlaufen
#1
Hallo VBA-Denksportler,

ich habe folgendes Problem. Ein Sonderzeichen "#" soll nacheinander alle Leerzeichen in einem Satz durchlaufen. Das Ergebnis soll dann folgendermaßen aussehen:

Position 5 : Dies#ist ein Satz, in dem ein Sonderzeichen nacheinander alle Leerzeichen durchläuft.
Position 9 : Dies ist#ein Satz, in dem ein Sonderzeichen nacheinander alle Leerzeichen durchläuft.
Position 13 : Dies ist ein#Satz, in dem ein Sonderzeichen nacheinander alle Leerzeichen durchläuft.
Position 19 : Dies ist ein Satz,#in dem ein Sonderzeichen nacheinander alle Leerzeichen durchläuft.
Position 22 : Dies ist ein Satz, in#dem ein Sonderzeichen nacheinander alle Leerzeichen durchläuft.
Position 26 : Dies ist ein Satz, in dem#ein Sonderzeichen nacheinander alle Leerzeichen durchläuft.
Position 30 : Dies ist ein Satz, in dem ein#Sonderzeichen nacheinander alle Leerzeichen durchläuft.
Position 44 : Dies ist ein Satz, in dem ein Sonderzeichen#nacheinander alle Leerzeichen durchläuft.
Position 57 : Dies ist ein Satz, in dem ein Sonderzeichen nacheinander#alle Leerzeichen durchläuft.
Position 62 : Dies ist ein Satz, in dem ein Sonderzeichen nacheinander alle#Leerzeichen durchläuft.
Position 74 : Dies ist ein Satz, in dem ein Sonderzeichen nacheinander alle Leerzeichen#durchläuft.

Wie kriege ich das auf die Reihe?
Top
#2
Moin

Wozu VBA wenn es mit zwei Formeln erledigt werden kann?
Arbeitsblatt mit dem Namen 'Tabelle1'
 AB
1 Dies ist ein Satz, in dem ein Sonderzeichen nacheinander alle Leerzeichen durchläuft.
25Dies#ist ein Satz, in dem ein Sonderzeichen nacheinander alle Leerzeichen durchläuft.
39Dies ist#ein Satz, in dem ein Sonderzeichen nacheinander alle Leerzeichen durchläuft.
413Dies ist ein#Satz, in dem ein Sonderzeichen nacheinander alle Leerzeichen durchläuft.
519Dies ist ein Satz,#in dem ein Sonderzeichen nacheinander alle Leerzeichen durchläuft.
622Dies ist ein Satz, in#dem ein Sonderzeichen nacheinander alle Leerzeichen durchläuft.
726Dies ist ein Satz, in dem#ein Sonderzeichen nacheinander alle Leerzeichen durchläuft.
830Dies ist ein Satz, in dem ein#Sonderzeichen nacheinander alle Leerzeichen durchläuft.
944Dies ist ein Satz, in dem ein Sonderzeichen#nacheinander alle Leerzeichen durchläuft.
1057Dies ist ein Satz, in dem ein Sonderzeichen nacheinander#alle Leerzeichen durchläuft.
1162Dies ist ein Satz, in dem ein Sonderzeichen nacheinander alle#Leerzeichen durchläuft.
1274Dies ist ein Satz, in dem ein Sonderzeichen nacheinander alle Leerzeichen#durchläuft.

ZelleFormel
A2=SUCHEN(" ";$B$1;A1+1)
B2=ERSETZEN(B$1;A2;1;"#")
Diese Tabelle wurde mit Tab2Html (v2.4.1) erstellt. ©Gerd alias Bamberg
Wir sehen uns!
... Detlef

Meine Beiträge können Ironie oder Sarkasmus enthalten.

[-] Folgende(r) 1 Nutzer sagt Danke an shift-del für diesen Beitrag:
  • Schülerin
Top
#3
Hallo,

eigentlich reicht schon das:


Code:
=WECHSELN($B$1;" ";"#";ZEILE(A1))
Gruß

Edgar

Meine Antworten sind freiwillig und ohne Gewähr!
Über Rückmeldungen würde ich mich freuen.
[-] Folgende(r) 1 Nutzer sagt Danke an BoskoBiati für diesen Beitrag:
  • Schülerin
Top
#4
Hallo Leute,

also schon mal besten Dank für die beiden Formel-Vorschläge zur Lösung . Aber ich suche doch eine Lösung über VBA Code.
Top
#5
Hi,

(10.02.2016, 16:54)Schülerin schrieb: Aber ich suche doch eine Lösung über VBA Code.

das hattest Du nicht gesagt!
[-] Folgende(r) 1 Nutzer sagt Danke an Rabe für diesen Beitrag:
  • Schülerin
Top
#6
Hallo Ralf,

dann bitte ich vielmals um Entschuldigung. Aber man lernt ja auch aus den Formellösungen.
Top
#7
Hi!
Na, wenn Du daraus lernst, warum wendest Du die Formel von BoskoBiati nicht per VBA an?
Schau mal:

Sub NaDannSo()
Dim strSatz As String, iSpace As Long
strSatz = "Dies ist ein Satz, in dem ein Sonderzeichen nacheinander alle Leerzeichen durchläuft."
iSpace = Ubound(Split(strSatz))
Range("A1") = strSatz
With Range("A2:A" & iSpace + 1)
   .Formula = "=SUBSTITUTE(A$1,"" "",""#"",ROW(A1))"
   .Formula = .Value
   .EntireColumn.AutoFit
End With
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)
[-] Folgende(r) 1 Nutzer sagt Danke an RPP63 für diesen Beitrag:
  • Schülerin
Top
#8
Hallo Ralf,

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.
Top
#9
Hallo Schülerin,

hier noch eine Variante, die das Ergebnis mit Debug.Print ausgibt

PHP-Code:
Public Sub Durchlaufen()

Dim sText    As String
Dim iLaenge  As Integer
Dim iStart   
As IntegeriStart 
   
   sText 
"Dies ist ein Satz, in dem ein Sonderzeichen nacheinander alle Leerzeichen durchläuft."
 
  
   Debug
.Print sText
   
   
For iLaenge iStart To Len(sText)
 
     If Mid(sTextiLaenge1) = " " Then
         Debug
.Print Left(sTextiLaenge 1) & "#" _
            Mid
(sTextiLaenge 1)
 
        iStart iLaenge 1          
      End 
If
 
  Next iLaenge
  
End Sub

Gruß Peter 
[-] Folgende(r) 1 Nutzer sagt Danke an pefeu für diesen Beitrag:
  • Schülerin
Top
#10
(10.02.2016, 17:09)Rabe schrieb: Hi,

(10.02.2016, 16:54)Schülerin schrieb: Aber ich suche doch eine Lösung über VBA Code.

das hattest Du nicht gesagt!


Hallo Ralf, hat sie!

Zitat:Hallo VBA-Denksportler,

ich habe folgendes Problem.
Gruß Conny :)
_______________________________________________________________

Die Summe der Intelligenz auf unserem Planeten ist konstant, aber die Bevölkerung wächst!
Top


Gehe zu:


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