Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
1764to1768
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Split Funktion

Split Funktion
10.06.2020 14:47:42
Marc
Hallo liebe Forumsgemeinde,
mit Hilfe einer Splitfunktion möchte ich Textstellen aus einer Zelle eines Excel Sheets auslesen, die wie folgt aussieht:
"Account-Nummer: 30004514
Studioname: FitX - Club 56 - B2B Verwaltung Abrechnungsdatum: 11.02.2020
Leistungsdatum: 11.02.2020
Belegnummer: MC20-045546"

Mit dem folgenden Code teile ich den String zunächst auf mit Hilfe eines Doppelpunkts als Trennzeichen:
Sub Converter()
Dim Zeile As Integer, WS As Worksheet, Str As String, Temp As String, Datum As String, Beleg As  _
String
Set WS = ThisWorkbook.Worksheets("Table 1")
' Datum & Abrechnungsnummer ermitteln
For Zeile = 1 To 5
If InStr(1, WS.Cells(Zeile, 1).Value, "Studioname") > 0 Then
Str = WS.Cells(Zeile, 1).Value
Exit For
Else
End If
Next Zeile
Dim Teilstring() As String
Teilstring = Split(Str, ":")
'On Error Resume Next
Datum = Split(Teilstring(3))   ' Fehlermeldung "Typen unverträglich!"
End Sub
Der String im entsprechenden Feld des Arrays (Teilstring(3) sieht wie folgt aus:
" 11.02.2020
Leistungsdatum"

Kann mir jemand sagen weshalb VBA "Typen unverträglich" meldet wenn ich versuche die Leerzeichen aus Teilstring(3) mit einem weiteren Split zu entfernen? Muss ich die Variable Teilstring redimensionieren bevor ich sie erneut splitten kann?
VG,
Marc

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Split Funktion
10.06.2020 15:01:01
peterk
Hallo
Datum ist als String definiert.
AW: Split Funktion
10.06.2020 15:03:40
Marc
Das tut aber in diesem Fall aber nichts zur Sache. Denn das Array ist ebenfalls ein String. Ich bekomme diese Fehlermeldung auch wenn ich Textstellen nehme, die kein Datum darstellen.
AW: Split Funktion
10.06.2020 15:15:05
peterk
Hallo
Die Split Funktion erwartet aber ein Array und keinen String. Du hast ja Teilstring auch als Array definiert.

Dim Teilstring() as String ' ein Array von Strings
Dim Datum as String ' Nur ein String

eine unglückliche Formulierung: Split erwartet....
10.06.2020 15:51:30
EtoPHG
aber ein Array, Peter,
Der Input für Split ist ein String, der Output ein Variant. Im Fall, dass mehrere Teilstrings erzeugt werden ein Array, sonst ein simpler String.
Der Befehl müsste so lauten (der erste Split ist unnötig):
Datum = Split(Split(Str,":")(3)," ")(0)

wenn die Trennung tatsächlich ein Leerzeichen ist. Es könnte allerdings ein LF sein, dann
Datum = Split(Split(Str,":")(3),Chr(10))(0)
Gruess Hansueli
Anzeige
AW: eine unglückliche Formulierung: Split erwartet....
10.06.2020 16:14:26
Mullit
Hallo Hansueli,
war allerdings hier von Peter sicher richtig gemeint: der Rückgabewert von Split() ist immer ein String-Array: msgbox typename(split("Hallo, wie geht's?"))....;-)
Gruß, Mullit
Falsch, Resultat kann auch KEIN array sein
10.06.2020 18:07:27
EtoPHG
, sondern ein simpler String, Mullit
Beweis:
msgbox typename(split("Danke, Es geht mir gut!","¦")

Gruess Hansueli
AW: Falsch, Resultat kann auch KEIN array sein
10.06.2020 18:37:11
Mullit
Hallo,
na Hansueli, da müssen wir aber noch mal testen, was...;-)
Userbild
Der Rückgabewert ist immer ein nullbasiertes eindim. String-Array, im bes. Fall wie Deinem eben mit nur einem Element...
MsgBox Split("Danke, Es geht mir gut!", "¦")(0)
Gruß, Mullit
Anzeige
AW: nich so ganz Falsch, aber...
10.06.2020 19:18:59
Mullit
...Hansueli, insofern hast Du nich ganz Unrecht, sich das nochmal anzugucken, ggf müsste man noch einen Sonderfall abfangen....
Sub test()
Dim astrArray() As String, strText As String

astrArray = Split(strText, "¦")

If Ubound(astrArray) < 0 Then
   MsgBox "wat denn nu, nix drin...!?", vbExclamation
Else
   MsgBox "juhuu, weiter gehts...", vbExclamation
End If
End Sub


VBA/HTML - CodeConverter für Office-Foren
AddIn für Excel/Word 2000-2010 - komplett in VBA geschrieben von Lukas Mosimann
Projektbetreuung durch mumpel



Code erstellt und getestet in Office 14

Gruß, Mullit
Anzeige
ich hatte es im Hinterkopf, dass ich
10.06.2020 19:57:37
EtoPHG
genau auf dieses Phänomen/Resultat bei einer Situation vor Jahren getroffen bin, Mullit
...aber nicht im Vorderkopf :-)
...was mich zur Nicht-Array Formulierung verführte. Das Resultat ist ein aber ein Array mit einem Ubound von -1 ! Darum hast du mehr Recht, als ich ;-)
Gruess Hansueli
AW: mach Dir da man kein Kopp......
10.06.2020 20:27:43
Mullit
...möchte man sagen, Hansueli, aber wir müssen da viell. nochmal etwas genauer unterscheiden, den Ubound-Wert -1 hat nur das Array in meinem konstruierten Nullstring Bsp., wird ein Text übergeben, ist exakt ein Element vorhanden und der Ubound-Wert somit 0....;-)
Sub test()
Dim strText As String
MsgBox UBound(Split(strText, "¦"))
MsgBox UBound(Split("Danke, Es geht mir gut!", "¦"))
End Sub

Gruß, Mullit
Anzeige
Ich spendiere noch die vergessene Klammer ;-)
10.06.2020 18:09:35
EtoPHG

AW: Split Funktion
10.06.2020 16:46:24
Marc
Hallo PeterK,
vielen Dank für diesen Hinweis. Ich war der Annahme ein String sei im Grunde ein eindimensionales Array und daher könne man den Split auch problemlos darauf anweden aber dann weiß ich ja nun Bescheid.
VG

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige