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

VBA Typen unverträglich bei Split

Forumthread: VBA Typen unverträglich bei Split

VBA Typen unverträglich bei Split
09.11.2021 08:14:49
BuddyHoli
Hallo Meister des VBA
Ich habe folgendes Problem:
Ich habe eine folgendes deklariert:
Public playerListR() as String
Während des Programms wird dann die Textbox26 (MultiLine = True, EnterKeyBehaviour = True) in UserForm1 mit Namen gefüllt. Während das passiert, erhöht sich die Long-Variable playerCountR jeweils um 1.
Folgender Code steht nun dort:

If playerCountR > 0 Then
playerListR = Split(UserForm1.TextBox26.Value, vbCrLf)
End If
Ich möchte also die Werte aus TextBox26 zeilenweise in playerListR schreiben. playerListR ist ein String-Array, Split erwartet einen String. Das sollte also doch eigentlich klappen.
Ich habe auch schon probiert, UserForm1.TextBox26.Value durch "TextBox26", "TextBox26.Text" usw. zu ersetzen. Half leider alles nicht.
Der Fehlercode ist Laufzeitfehler 13 - Typen unverträglich. Der Debugger bleibt bei der Zeile "playerListR = ..." stehen
Ich hoffe, ihr habt einen Rat :)
Anzeige

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Nicht nachvollziehbar...
09.11.2021 08:31:01
{Boris}
Hi,
...das sollte eigentlich so klappen. Kannst Du die Mappe mal hochladen? (eingedampft auf das Nötigste)
VG, Boris
Deine Variablendeklarationen sind nicht sauber...
09.11.2021 09:00:17
{Boris}
Hi,

Public sptableHead(), sptableHeadH(), sptableHeadA(), sptableData(), sptableDataH(), sptableDataA(), ghostValues(), ghostValuesH(), ghostValuesA() As Variant
Public playersAll(), playersReal(), playersFake() As String
Public playertableHead(), playertableData() As Variant
Public spmdsTotal, spmdsPlayed, spmdsUnplayed, spdsTotal, spdsPMD, spdsPlayed, spdsUnplayed, spRowMax As Long
Public numPlayers, numPlayersR, numPlayersF As Long
Public playerCount, playerCountR, playerCountF As Long
Public spRowF, spRowL, spColF, spColL, plRowF, plRowL, plColF, plColL As Long
Du musst jeder Variable einzeln ihren Datentyp zuweisen:

Public playersAll() As String, playersReal() As String, playersFake() As String
Und das gilt für alle Variablen.
VG, Boris
Anzeige
AW: Deine Variablendeklarationen sind nicht sauber...
09.11.2021 09:04:25
BuddyHoli
Okay, Du hattest Recht.
Nun läuft es sauber durch.
Ich danke dir :)
Nachtrag:
09.11.2021 09:04:47
{Boris}
Und das gilt für alle Variablen die nicht Variant sein sollen. - was sie ohne explizite Zuweisung sind.
VG; Boris
AW: Nachtrag:
09.11.2021 09:25:51
BuddyHoli
Ich habe das für alle Variablen umgesetzt :) besten Dank Boris
Anzeige
AW: VBA Typen unverträglich bei Split
09.11.2021 08:39:38
Luschi
Hallo BuddyHoli,
bei mir klappt's: siehe Bildchen
Userbild
Gruß von Luschi
aus klein-Paris
AW: VBA Typen unverträglich bei Split
09.11.2021 08:51:18
BuddyHoli
Ja, nur inwiefern hilft mir das weiter?
AW: VBA Typen unverträglich bei Split
09.11.2021 11:03:46
Luschi
Hallo BuddyHoli,,
ich dachte, Du kannst Vba-Code lesen und hast gesehen, wie ich vArr() definiert habe.
Gruß von Luschi
aus klein-Paris
PS:
Dim i, k , j , f As Integer
- in Vba ist nur die Variable 'f' vom Typ Integer, die anderen sind von Typ 'Variant
- in Vb.Net, C#, Java u.ä- sind dann alle von Typ Integer
Anzeige
AW: VBA Typen unverträglich bei Split
09.11.2021 11:06:54
BuddyHoli
Ich habe meinen Array auch definiert.
Aber ich wusste nicht, dass
Public myArray1, myArray2, myArray3 as String
nicht das Gleiche ist wie
Public myArray1 As String
Public myArray2 As String
Public myArray3 As String
Nun weiß ich es und nun klappt es
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige

Infobox / Tutorial

VBA Typen und das Split-Problem


Schritt-für-Schritt-Anleitung

Um den "Typen unverträglich"-Fehler bei der Verwendung der Split-Funktion in Excel VBA zu beheben, folge diesen Schritten:

  1. Variablen korrekt deklarieren: Stelle sicher, dass jede Variable den richtigen Datentyp hat. Anstelle von:

    Public myArray1, myArray2, myArray3 As String

    sollte es so aussehen:

    Public myArray1 As String
    Public myArray2 As String
    Public myArray3 As String
  2. Split-Funktion verwenden: Wenn Du den Inhalt einer Textbox zeilenweise in ein Array aufteilen möchtest, solltest Du die Split-Funktion korrekt anwenden:

    If playerCountR > 0 Then
       playerListR = Split(UserForm1.TextBox26.Value, vbCrLf)
    End If
  3. Fehlermeldungen beachten: Achte auf Fehlermeldungen wie "Laufzeitfehler 13 - Typen unverträglich". Dies deutet häufig darauf hin, dass eine Variable nicht korrekt deklariert ist.


Häufige Fehler und Lösungen

  1. Typen unverträglich: Der häufigste Fehler ist, dass Variablen nicht den erwarteten Datentyp haben. Stelle sicher, dass alle für Split verwendeten Variablen vom Typ String sind.

  2. falsche Verwendung von Split: Überprüfe, ob der Eingabetext tatsächlich ein String ist. Manchmal kann die Textbox leer sein oder unerwartete Zeichen enthalten.

  3. Variablen ohne Typzuweisung: Wenn Du Variablen deklarierst, ohne ihnen einen Typ zuzuweisen, werden sie standardmäßig als Variant betrachtet. Dies kann zu unerwarteten Ergebnissen führen.


Alternative Methoden

  • Verwendung von TextToColumns: Eine alternative Methode, um Text in Spalten aufzuteilen, ist die Verwendung der Funktion TextToColumns, die Du über das Menü "Daten" findest.

  • Manuelles Aufteilen: Du kannst auch eine Schleife verwenden, um den Text manuell aufzuteilen, anstatt die Split-Funktion zu verwenden.

Dim lines() As String
Dim i As Long

lines = Split(UserForm1.TextBox26.Value, vbCrLf)
For i = LBound(lines) To UBound(lines)
    ' Hier kannst Du die Zeilen weiterverarbeiten
Next i

Praktische Beispiele

Hier ist ein einfaches Beispiel, wie Du die Split-Funktion in Excel VBA verwenden kannst:

Sub BeispielSplit()
    Dim playerListR() As String
    Dim playerCountR As Long
    playerCountR = 3 ' Beispielwert

    If playerCountR > 0 Then
        playerListR = Split("Spieler1" & vbCrLf & "Spieler2" & vbCrLf & "Spieler3", vbCrLf)
        MsgBox playerListR(0) ' Gibt "Spieler1" aus
    End If
End Sub

Tipps für Profis

  • Eingaben validieren: Überprüfe, ob der Inhalt der Textbox leer ist, bevor Du Split aufrufst, um Fehler zu vermeiden.

  • Debugging: Nutze die Debugging-Tools in VBA, um den Wert von Variablen zu überprüfen, bevor Du die Split-Funktion aufrufst.

  • Typen konsistent halten: Halte die Typen Deiner Variablen konsistent, um Probleme mit typen unverträglich vba zu vermeiden.


FAQ: Häufige Fragen

1. Warum erhalte ich den Fehler "Typen unverträglich"? Der Fehler tritt auf, wenn Du versuchst, einen Wert zuzuweisen, der nicht vom erwarteten Datentyp ist. Überprüfe die Deklarationen Deiner Variablen sorgfältig.

2. Was ist der Unterschied zwischen Variant und String? Variant kann verschiedene Datentypen speichern, während String speziell für Textdaten gedacht ist. Verwende String, wenn Du sicher bist, dass Deine Daten Text sind.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige