Live-Forum - Die aktuellen Beiträge
Datum
Titel
16.10.2025 17:40:39
16.10.2025 17:25:38
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Fehler beim Kompilieren: Erwartet Datenfeld?

Fehler beim Kompilieren: Erwartet Datenfeld?
30.11.2016 14:05:32
Winfried
Hallo zusammen,
hab wieder ein Problem bei welchem ich nicht alleine weiterkomme.
Ich rufe hintereinander 2 Funktionen auf, bei dem das Ergebnis der ersten Funktion direkt an die zweite Übergeben werden soll.
Funktionsaufruf der ersten und Ergebnisübertragung in die Variable "Abstand" klappen tadelos.
Beim Aufruf der zweiten Funktion (Fahrzeit) erhalte ich aber die Meldung "Fehler beim Kompilieren: Erwartet Datenfeld?" und kann mir keinen Reim darauf machen.
Kann mir einer sagen wo der Fehler liegt?
Danke schonaml im Voraus für eure Mühen & Hilfe.
VG
Winfried

Dim von as String
Dim nach als String
Dim Abstand as Double
Dim Fahrzeit1 as Double
Abstand = Entfernung(von, nach) 'Funktionsaufruf 1
Fahrzeit1 = Fahrzeit(Abstand)   'Funktionsaufruf 2
____________________________________________________________________
Function Entfernung(von As String, nach As String) As Double
Set TB5 = Sheets("Abstandsmatrix")
Worksheets("Abstandsmatrix").Activate
With Application.WorksheetFunction
Entfernung = .Index(TB5.Range("A1:Z30"), .Match(von, (TB5.Rows(1)), 0), .Match(nach, (TB5. _
Columns(1)), 0))
' Debug.Print entfernung
End With
End Function
_________________________________________________________________________
Function Fahrzeit(Entfernung As Double) As Double
If Entfernung > 300 Then
Fahrzeit = Entfernung / 85 / 24 * 1.1
ElseIf Entfernung > 150 Then
Fahrzeit = Entfernung / 70 / 24 * 1.15
ElseIf Entfernung 

Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Fehler beim Kompilieren: Erwartet Datenfeld?
30.11.2016 14:24:03
ChrisL
Hi Winfried
Dim nach als String
Der Funktionsaufruf muss aus z.B. aus einem Sub heraus geschehen...
Abstand = Entfernung(von, nach) 'Funktionsaufruf 1
Fahrzeit1 = Fahrzeit(Abstand) 'Funktionsaufruf 2
Und es fehlt auch noch ein "End If" bei Fahrzeit()
cu
Chris
Anzeige
AW: Fehler beim Kompilieren: Erwartet Datenfeld?
30.11.2016 14:53:14
Winfried
Hi Chris,
Hab die Variable "nach" auch "as String" deklariert, hatte mich hier nur vertippt =)
Das endif hatte ich tatsächlich verpeilt =), danke dir.
FACEPALM...OMG... Ich hab den Fehler gefunden......
Ich hatte noch eine Variable "Fahrzeit as Double" deklariert.... das hat sich wohl mt dem Funktionsnamen "Fahrzeit()" nicht so ganz vertragen =) Man bin ich ein Trottel ;o)
Danke trotzdem nochmal für deine Hilfe.
VG
Winfried
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Fehler beim Kompilieren: Erwartet Datenfeld?


Schritt-für-Schritt-Anleitung

Wenn du in VBA (Visual Basic for Applications) die Fehlermeldung "Fehler beim Kompilieren: Erwartet Datenfeld?" erhältst, gibt es einige Schritte, die du zur Fehlersuche unternehmen kannst. Hier ist eine einfache Anleitung:

  1. Überprüfe die Variablendeklaration: Stelle sicher, dass alle Variablen korrekt deklariert sind. In deinem Fall sollte die Deklaration für nach so aussehen:
    Dim nach As String
  2. Funktionsaufruf: Achte darauf, dass der Funktionsaufruf in einem Sub erfolgt. Deine Funktionsaufrufe müssen innerhalb eines Subroutinen-Blocks liegen:
    Sub Berechnungen()
       Abstand = Entfernung(von, nach) ' Funktionsaufruf 1
       Fahrzeit1 = Fahrzeit(Abstand)   ' Funktionsaufruf 2
    End Sub
  3. End If hinzufügen: Vergiss nicht, ein End If bei bedingten Anweisungen in der Funktion Fahrzeit hinzuzufügen. Das könnte so aussehen:
    If Entfernung > 300 Then
       Fahrzeit = Entfernung / 85 / 24 * 1.1
    ElseIf Entfernung > 150 Then
       Fahrzeit = Entfernung / 70 / 24 * 1.15
    End If

Häufige Fehler und Lösungen

Hier sind einige häufige Fehler, die du vermeiden solltest, sowie Lösungen:

  • Variable hat denselben Namen wie die Funktion: Wenn du eine Variable Fahrzeit deklariert hast, kann das zu Konflikten mit der Funktion Fahrzeit() führen. Benenne die Variable um, z.B. FahrzeitWert.

  • Fehlende End-Anweisungen: Achte darauf, dass jede If-Anweisung mit einem End If abgeschlossen wird. Ein häufiges Problem ist das Vergessen dieser Anweisung.

  • Falsche Typen: Stelle sicher, dass die Typen der Variablen und Parameter übereinstimmen. Abstand sollte als Double definiert sein, was du bereits korrekt gemacht hast.


Alternative Methoden

Falls du weiterhin Schwierigkeiten hast, kannst du auch folgende alternative Methoden in Betracht ziehen:

  • Fehlersuche mit Debug.Print: Füge Debug.Print-Anweisungen in deine Funktionen ein, um die Werte von Variablen während der Ausführung anzuzeigen.

  • Verwendung des VBA-Debuggers: Starte den Debugger, um die Ausführung Schritt für Schritt zu verfolgen. Dies kann dir helfen, den genauen Punkt zu finden, an dem der Fehler auftritt.


Praktische Beispiele

Hier ist ein einfaches Beispiel, das zeigt, wie du die Funktion Entfernung korrekt aufrufst und die Ergebnisse in einer Variablen speicherst:

Sub BeispielBerechnung()
    Dim von As String
    Dim nach As String
    Dim Abstand As Double
    Dim FahrzeitWert As Double

    von = "Ort A"
    nach = "Ort B"

    Abstand = Entfernung(von, nach) ' Funktionsaufruf 1
    FahrzeitWert = Fahrzeit(Abstand) ' Funktionsaufruf 2

    Debug.Print "Abstand: " & Abstand
    Debug.Print "Fahrzeit: " & FahrzeitWert
End Sub

Tipps für Profis

  • Vermeide globale Variablen: Halte den Code modular und vermeide die Verwendung globaler Variablen, um Konflikte zu vermeiden.

  • Nutze Option Explicit: Füge am Anfang jedes Moduls Option Explicit hinzu, um sicherzustellen, dass alle Variablen deklariert werden müssen. Das hilft, Tippfehler zu vermeiden.

  • Regelmäßige Code-Überprüfung: Lass deinen Code von einem Kollegen überprüfen, um frische Perspektiven zu erhalten und potenzielle Fehler aufzudecken.


FAQ: Häufige Fragen

1. Was bedeutet "Fehler beim Kompilieren: Erwartet Datenfeld?" Dieser Fehler tritt auf, wenn VBA an einer Stelle Daten erwartet, die nicht korrekt geliefert werden. Dies könnte durch fehlende Deklarationen oder falsche Typen verursacht werden.

2. Wie kann ich sicherstellen, dass meine Funktionen korrekt aufgerufen werden? Achte darauf, dass Funktionsaufrufe innerhalb von Subroutinen erfolgen und dass alle Variablen ordnungsgemäß deklariert sind. Vermeide Namenskonflikte zwischen Variablen und Funktionen.

3. Gibt es spezielle Einstellungen in Excel, die ich beachten sollte? Stelle sicher, dass du die korrekte Excel-Version verwendest, die VBA unterstützt. Einige Funktionen oder Methoden könnten je nach Version unterschiedlich funktionieren.

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