Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Bestimmtes Zeichen in einem String rückwärtssuchen

Forumthread: Bestimmtes Zeichen in einem String rückwärtssuchen

Bestimmtes Zeichen in einem String rückwärtssuchen
28.10.2002 14:14:50
Steffen D
folgendes:
ich habe folgenden String:

Pfad="\\Ntserver\temp\Mappe1.xls"

nun möchte ich um die Datei (Mappe1.xls) eckige Klammer machen (Ziel: externe Bezüge)
dann müsste es so aussehen:
Pfad = "\\Ntserver\temp\[Mappe1.xls]"

das ganze möchte ich in einem Makro machen, also bitte in VBA

thx

Steffen D

Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Re: Bestimmtes Zeichen in einem String rückwärtssuchen
28.10.2002 14:24:00
Harald Kapp
Hallo Steffen,
suche in einer ersten Schleife mit Instr() so lange den Backslash (\), bis Du ihn nicht mehr findest. Mit der letzten Fundstelle +1 hast Du dann den Anfang des Dateinamens (Mappe1.xls). Dann brauchst Du nur noch aus der Länge des ursprünglichen Strings minus Fundstelle des Backslash mitels Right() den Dateinamen zu extrahieren. Aus den Einzelteilen kannst Du Dir dann den neuen Strin zusammen bauen.

Gruß Harald

Anzeige
Re: Bestimmtes Zeichen in einem String rückwärtssuchen
28.10.2002 14:30:40
Norbert
Hi Steffen,

Du kannst es auch mit StrReverse(Zeichenfolge) machen. Das Beispiel ermittelt die Postion des letzten Backslash.

Sub p_RightSearch()
Dim strSuchZF As String
strSuchZF = "\\Ntserver\temp\Mappe1.xls"
strSuchZF = StrReverse(strSuchZF)
Debug.Print Len(strSuchZF) - InStr(1, strSuchZF, "\", vbTextCompare) + 1
End Sub


ciao Norbert

Anzeige
Re: Bestimmtes Zeichen in einem String rückwärtssuchen
28.10.2002 18:31:05
Peter Feustel
Hallo Steffen,

meine Version deines VBA Makros sieht folgendermaßen aus:

' im String "\\Ntserver\temp\Mappe1.xls" soll die Position des rechten "\"
' gefunden werden, um die dahinter folgenden Zeichen "Mappe1.xls" in []
' einschzuließen.

Sub Suchen_von_rechts()
'
Dim strAlt As String
Dim intLgAlt As Integer
Dim intPos As Integer
Dim strZeichen As String * 1
Dim strNeu As String

strAlt = "\\Ntserver\temp\Mappe1.xls" ' den String festlegen
Rem strAlt = "hier_fehlt_der_backslash" ' Test-String - wird komplett in [] gesetzt
intLgAlt = Len(strAlt) ' die Länge des Strings ermitteln
' die Position des Zeichens '\' ermitteln
For intPos = intLgAlt To 1 Step -1
strZeichen = Mid(strAlt, intPos, 1)
If strZeichen = "\" Then
Exit For
End If
Next intPos
' das Ergebnis anzeigen
MsgBox "im String >>>" & strAlt & "<<< ist die Position des letzten '\' auf " & intPos, _
64, "Zeichen von rechts suchen"
' den neuen String erzeugen
strNeu = Mid(strAlt, 1, intPos) & "[" & Mid(strAlt, intPos + 1, intLgAlt - intPos) & "]"
' das Ergebnis anzeigen
MsgBox "der umgeformte String ist >>>" & strNeu & "<<<", 64, "neuer String"

'
End Sub


Gruß, Peter

Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Bestimmtes Zeichen in einem String rückwärtssuchen


Schritt-für-Schritt-Anleitung

Um ein bestimmtes Zeichen in einem String rückwärts zu suchen und beispielsweise den letzten Backslash zu finden, kannst du die folgende VBA-Methode verwenden. Hier sind die Schritte:

  1. Öffne Excel und gehe zu den Entwicklertools.

  2. Klicke auf „Visual Basic“, um den VBA-Editor zu öffnen.

  3. Erstelle ein neues Modul.

  4. Füge den folgenden Code ein:

    Sub Suchen_von_rechts()
       Dim strAlt As String
       Dim intLgAlt As Integer
       Dim intPos As Integer
       Dim strZeichen As String * 1
       Dim strNeu As String
    
       strAlt = "\\Ntserver\temp\Mappe1.xls" ' den String festlegen
       intLgAlt = Len(strAlt) ' die Länge des Strings ermitteln
    
       ' die Position des Zeichens '\' ermitteln
       For intPos = intLgAlt To 1 Step -1
           strZeichen = Mid(strAlt, intPos, 1)
           If strZeichen = "\" Then
               Exit For
           End If
       Next intPos
    
       ' den neuen String erzeugen
       strNeu = Mid(strAlt, 1, intPos) & "[" & Mid(strAlt, intPos + 1, intLgAlt - intPos) & "]"
       MsgBox "Der umgeformte String ist >>>" & strNeu & "<<<", 64, "Neuer String"
    End Sub
  5. Führe das Makro aus, um die Position des letzten Backslash zu finden und den neuen String zu erstellen.


Häufige Fehler und Lösungen

  • Fehler: „Compile error: Variable not defined“

    • Lösung: Stelle sicher, dass alle Variablen korrekt deklariert sind.
  • Fehler: „Runtime error: 9 - Subscript out of range“

    • Lösung: Überprüfe, ob der String tatsächlich den gesuchten Backslash enthält.
  • Fehler: Falsches Ergebnis oder keine Rückmeldung

    • Lösung: Stelle sicher, dass die Schleife korrekt durchläuft und die Bedingungen für den Exit-Befehl stimmen.

Alternative Methoden

Eine alternative Methode zur Suche nach einem Zeichen in einem String ist die Verwendung der Funktion StrReverse. Hier ein einfaches Beispiel:

Sub p_RightSearch()
    Dim strSuchZF As String
    strSuchZF = "\\Ntserver\temp\Mappe1.xls"
    strSuchZF = StrReverse(strSuchZF)
    MsgBox Len(strSuchZF) - InStr(1, strSuchZF, "\", vbTextCompare) + 1
End Sub

Diese Methode kehrt den String um und verwendet dann InStr, um die Position des letzten Backslash zu finden.


Praktische Beispiele

Hier sind einige praktische Anwendungsbeispiele:

  1. Dateipfad anpassen: Wenn du den Pfad eines Excel-Dokuments hast und den Dateinamen in Klammern setzen möchtest, kannst du die oben beschriebene Methode verwenden.
  2. Länge eines Strings ermitteln: Um die Länge eines Strings in VBA zu ermitteln, verwendest du Len(strAlt).
Dim stringLength As Integer
stringLength = Len(strAlt)
MsgBox "Die Länge des Strings beträgt: " & stringLength

Tipps für Profis

  • Nutze die InStrRev Funktion, um direkt die Position eines Zeichens von rechts zu ermitteln:

    Dim pos As Integer
    pos = InStrRev(strAlt, "\")
  • Wenn du häufig mit Zeichenfolgen arbeitest, erstelle eine Funktion, die dir die Position des letzten Zeichens zurückgibt, um den Code zu optimieren.


FAQ: Häufige Fragen

1. Wie finde ich das letzte Leerzeichen in einem String? Verwende die Funktion InStrRev mit einem Leerzeichen als Suchbegriff.

2. Kann ich die Suche nach Zeichen auch in einer Zelle durchführen? Ja, du kannst den Zellinhalt direkt in die Variablen einlesen, z.B. strAlt = Range("A1").Value.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige