Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Argumenttyp ByRef unverträglich

Forumthread: Argumenttyp ByRef unverträglich

Argumenttyp ByRef unverträglich
03.10.2003 19:19:09
Kriskra
Hallo, ich habe mich gerade mit dem thema Winsock befasst und baute den server:

......


Private Sub ws_DataArrival(ByVal bytesTotal As Long)
kommanDo = ""
Parameter = ""
ws.GetData tmP
EndC = 0
For X = 1 To Len(tmP)
If Mid(tmP, X, 1) = " " Then
EndC = X
X = Len(tmP)
End If
Next X
If EndC = 0 Then
kommanDo = tmP
GoTo nÄchstes
End If
Parameter = Mid(tmP, EndC + 1, Len(tmP) - EndC)
kommanDo = Mid(tmP, 1, EndC - 1)
nÄchstes:
InterPretierEn kommanDo, Parameter
End Sub


Doch wenn ich es Kompilieren will kommt die Fehlermeldung:
Argumenttyp ByRef unverträglich
Im bezug auf das kommanDo in der vorletzten zeile...

Das ist das Modul dazu, das die Befehle ausführt

Public Function InterPretierEn(c As String, p As String)
Select Case LCase(c)
Case "showmessage"
MsgBox p, vbSystemModal, "Message!"
Case "showinput"
Dim ansWer As String
ansWer = InputBox(p, "Request")
Form1.ws.SendData ansWer
Case "close"
End
End Select
End Function


Hoffe mir kann jemand sagen was der fehler ist, danke...
Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Argumenttyp ByRef unverträglich
03.10.2003 21:27:45
Nepumuk
Hallo Kriskra,
so wie es aussieht, sind die Variablen "kommanDo" und "Parameter" nicht spezifisch dimensioniert. Darum legt ´VBA sie automatisch als Variant-Variable an. Diese versuchst du in deinem Programm an eine String-Variable zu übergeben. Daher der Konflikt.
Lösungen:

1. Die Variablen mit einer Dim - Anweisung als String zu definieren. {Dim kommanDo as String, Parameter as String}

2. Die Variablen mit einer CStr - Anweisung zu einem String zu konvertieren.{InterPretierEn CStr(kommanDo), CStr(Parameter)}

3. Nur den Wert der Variablen ohne Dimension zu übergeben. {InterPretierEn (kommanDo), (Parameter)}

Gruß
Nepumuk
Anzeige
AW: Argumenttyp ByRef unverträglich
03.10.2003 21:58:58
Kriskra
Jo danke das komplimieren hat jetzt funktioniert! Aber irgentwie geht es immernochnicht! Ich hab das Script mal hochgeladen:

https://www.herber.de/bbs/user/1282.zip

Wäre sehr dankbar wenns mal jemand ankuckt und korregiert...wie gesagt Progge noch nicht lange mit Winsock! (Is fürn VB6, einfach in WSTest...WSClient...Gruppe1.vbg öffnen)

Danke im Vorraus!!!
Anzeige
AW: Argumenttyp ByRef unverträglich
03.10.2003 22:06:48
Nepumuk
Hallo Kriskra,
die Spezialisten dafür findest du hier: http://www.vb-fun.de/vb/index.htm
Gruß
Nepumuk
AW: Argumenttyp ByRef unverträglich
03.10.2003 21:35:48
Andy
Genau das Problem habe ich auch aber in einem anderen projekt, habe das projekt dann aufgegeben, wäre aber auch froh wenn jemand eine Lösung weis...Dann kram ich das Projekt wieder aus :)
Anzeige
Anzeige

Infobox / Tutorial

Argumenttyp ByRef unverträglich in Excel VBA beheben


Schritt-für-Schritt-Anleitung

  1. Überprüfe deine Variablen: Stelle sicher, dass die Variablen, die du in deiner Funktion verwendest, korrekt dimensioniert sind. In deinem Fall sollten kommanDo und Parameter als Strings deklariert werden:

    Dim kommanDo As String, Parameter As String
  2. Ändere die Funktionsaufrufe: Wenn du eine Variable an eine Funktion übergibst, die ein ByRef-Argument erwartet, stelle sicher, dass der Datentyp übereinstimmt. Wenn deine Funktion InterPretierEn Strings erwartet, übergebe sie entsprechend:

    InterPretierEn CStr(kommanDo), CStr(Parameter)
  3. Teste die Änderungen: Führe dein Projekt erneut aus und überprüfe, ob die Fehlermeldung Argumenttyp ByRef unverträglich weiterhin auftritt.


Häufige Fehler und Lösungen

  • Variablen nicht dimensioniert: Wenn die Variablen nicht mit einem spezifischen Datentyp deklariert sind, behandelt VBA sie als Variant. Dies kann zu dem Fehler vba argumenttyp byref unverträglich führen.

  • Mismatch der Datentypen: Achte darauf, dass die übergebenen Argumente den erwarteten Datentypen in der Funktion entsprechen. Ansonsten kann der Fehler byref unverträglich auftreten.


Alternative Methoden

  1. Verwendung von ByVal: Wenn du die Variablen nicht ändern musst, kannst du die Argumente auch mit ByVal übergeben. Dies verhindert, dass VBA den Typ der Variablen überprüfen muss.

    Public Function InterPretierEn(ByVal c As String, ByVal p As String)
  2. Direkte Übergabe von Strings: Statt Variablen zu übergeben, kannst du auch direkt Strings an die Funktion übergeben, um den Typkonflikt zu vermeiden.


Praktische Beispiele

Hier ist ein Beispiel, wie du die oben genannten Tipps umsetzen kannst:

Private Sub ws_DataArrival(ByVal bytesTotal As Long)
    Dim kommanDo As String
    Dim Parameter As String

    ws.GetData tmP
    EndC = 0
    For X = 1 To Len(tmP)
        If Mid(tmP, X, 1) = " " Then
            EndC = X
            X = Len(tmP)
        End If
    Next X

    If EndC = 0 Then
        kommanDo = tmP
    Else
        Parameter = Mid(tmP, EndC + 1, Len(tmP) - EndC)
        kommanDo = Mid(tmP, 1, EndC - 1)
    End If

    InterPretierEn CStr(kommanDo), CStr(Parameter)
End Sub

Tipps für Profis

  • Variablen immer dimensionieren: Dies ist eine gute Programmierpraxis, die dir hilft, Fehler wie excel vba argumenttyp byref unverträglich zu vermeiden.

  • Dokumentation verwenden: Nutze die offizielle Microsoft-Dokumentation zu VBA-Datentypen und Argumentarten, um ein besseres Verständnis zu bekommen.

  • Debugging-Tools nutzen: Verwende die Debugging-Tools von Excel VBA, um Fehler schneller zu identifizieren und zu beheben.


FAQ: Häufige Fragen

1. Was bedeutet Argumenttyp ByRef unverträglich?
Diese Fehlermeldung tritt auf, wenn ein Argument an eine Funktion übergeben wird, das nicht dem erwarteten Datentyp entspricht.

2. Wie kann ich den Fehler beheben?
Überprüfe, ob die Variablen korrekt dimensioniert sind und den gleichen Datentyp wie die Funktionserwartungen haben.

3. Was sind ByRef und ByVal?
ByRef übergibt die Variable als Referenz, sodass Änderungen an der Variablen auch außerhalb der Funktion sichtbar sind. ByVal übergibt eine Kopie der Variable.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige