Microsoft Excel

Herbers Excel/VBA-Archiv

String zerlegen

Betrifft: String zerlegen von: Tobias
Geschrieben am: 02.09.2004 08:40:07

hallo,

ich habe ein problem bei dem ich einfach nicht vom fleck komme:

ein habe einen String und den möchte ich in mehrere Teile zerlegen. Dazwischen steht entweder ein " " oder ein ";". Wie kann ich jetzt prüfen ob da noch ein Delemiter kommt oder nicht, bzw wann weiß ich ob überhaupt noch was nach einer bestimmten stelle kommt.

Ich habe das ganze mit der Splitfunktion versucht aber da gibt es immer einen Fehler.


hier mal ein Auszug von meinem versuch:

Diese funktion soll mir die Semikolons in einem übergebenen String zählen.

Private Function count_semi(text As Variant) As Variant
    Dim Part As Variant
    Dim lauf As Integer
    Dim Ende As Boolean
    Dim counter As Integer
    
    counter = 0
    
    While Ende = False
        Part = Split(text, ";")
        If Part(0) <> "" Then
            count_semi = counter
            Ende = True
        End If
        If Part(1) Is Not Empty Then
            counter = counter + 1
            text = Part(1)
        End If
    Wend
End Function



Das mit dem einfachen Fragen nach ist Part(1) not empty hat den nachteil, das split wenn ich das richtig verstehe sobald mal die länge überschreitet bei der kein Delimiter mehr kommt einen Fehler zurückgibt.


mfg
Tobias
  


Betrifft: AW: String zerlegen von: Harald Kapp
Geschrieben am: 02.09.2004 09:00:36

Hallo Tobias,
mal ein Gerüst:

Sub test()
Const Suchzeichen = ";"
Const Teststring = "Hallo;Was geht?;Wer war's?;Keiner"

Dim TmpString As String
Dim AnzahlDelimiter As Integer

TmpString = Teststring
AnzahlDelimiter = 0
Do While InStr(1, TmpString, Suchzeichen) <> 0
    AnzahlDelimiter = AnzahlDelimiter + 1
    TmpString = Right(TmpString, Len(TmpString) - InStr(1, TmpString, Suchzeichen))
    Debug.Print TmpString
    
Loop
Debug.Print AnzahlDelimiter
End Sub



Gruß Harald


  


Betrifft: AW: String zerlegen von: Tobias
Geschrieben am: 02.09.2004 09:06:16

Hallo Harald,

erst mal danke für die Antwort.

ich habe mir die ganzen Parameter von der Function Split mal genauer angeschaut und da hat sich über eine kleine Änderung des Denkansatzes das ganze auf anderem Wege gelöst.

ÜBer ein Array. Wenn man jetzt die Anzahl der Delimiter haben will zieht man einfach von dem Max Index 1 ab.

#######################################################
Dim lauf As Integer
Dim tempArray() As String

For lauf = 0 To List2.ListCount
List2.List(lauf) = ""
Next

tempArray = Split(text, ";", , vbTextCompare)

For lauf = 0 To UBound(tempArray)
List2.List(lauf) = tempArray(lauf)
Next

#######################################################

aber da ich das semikolonzählen dafür verwenden wollte um mir das max für die schleife , in der die listbox gefüllt wird, zu ermitteln haben sich hier gleich 2 Probleme mit einem mal aufgelöst. =)

gruß
Tobias


  


Betrifft: AW: String zerlegen von: Tobias
Geschrieben am: 02.09.2004 09:08:58

Manchmal sieht man echt den Wald vor lauter Bäumen nicht.

Ein kleiner fehler ist noch drinnen aber ich denk mal das der sich beheben läßt. Denn jetzt wird der Index der Listbox immer hochgezählt und immer wenn ich aus einer listbox was anklicke dann wägst der listbox2 index weiter. =) Mal schaun.

gruß Tobias


  


Betrifft: AW: String zerlegen von: Tobias
Geschrieben am: 02.09.2004 09:12:38

war nicht schwer. =) List wird einfach immer vorher gelöscht.

##########################################
While List2.ListCount <> 0
List2.RemoveItem (0)
Wend
##########################################

gruß Tobias


  


Betrifft: hat sich erledigt von: Tobias
Geschrieben am: 02.09.2004 09:01:36

Das Problem hat sich gelöst und es ist praktischerweise extrem kurz. =)

greetz
Tobias


 

Beiträge aus den Excel-Beispielen zum Thema "String zerlegen"