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

Forumthread: Erwartet Datenfeld

Erwartet Datenfeld
Georg
Hallo,
ich habe mir schon ca. eine Stunde um die Ohren geschlagen und frage euch um Rat. Es geht um ein paar Arrays von meinem Makro.Ich bekomme immer die Fehlermeldung "Fehler beim Kompilieren: Erwartet Datenfeld
Ich habe die Var als Double definiert und ich bekomme immer diese Fehlermeldung ab nom_x7(y1)
Kann jemand mir helhen
Dim min_x(4 To 23), min_j(4 To 23), min_b(4 To 23), min_x52(4 To 23), min_x7 As Double
Dim max_x(4 To 23), max_j(4 To 23), max_b(4 To 23), max_x52(4 To 23), max_x7 As Double
Dim nom_x(4 To 23), nom_j(4 To 23), nom_b(4 To 23), nom_x52(4 To 23), nom_x7 As Double
Dim min_x2, max_x2, nom_x2 As Double
For y1 = 4 To 23
Workbooks("Shaker.xlsm").Activate
nom_x(y1) = Cells(8, y1)
min_x(y1) = Cells(9, y1)
max_x(y1) = Cells(10, y1)
nom_j(y1) = Cells(11, y1)
min_j(y1) = Cells(12, y1)
max_j(y1) = Cells(13, y1)
nom_b(y1) = Cells(14, y1)
min_b(y1) = Cells(15, y1)
max_b(y1) = Cells(16, y1)
nom_x52(y1) = Cells(17, y1)
min_x52(y1) = Cells(18, y1)
max_x52(y1) = Cells(19, y1)
nom_x7(y1) = Cells(20, y1)
min_x7(y1) = Cells(21, y1)
max_x7(y1) = Cells(22, y1)
nom_x2(y1) = Cells(23, y1)
min_x2(y1) = Cells(24, y1)
max_x2(y1) = Cells(25, y1)
Viele Grüße
Georg
Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
nom_x7 ist KEIN Datenfeld! Deshalb!
11.07.2011 15:13:41
Luc:-?
Mit nom_x7(y1) sprichst du ein Datenfeldelement an, Georg,
nom_x7 ist aber nicht als solches, sondern als Einzelvariable vom Typ Double definiert! Das gilt auch für die anderen …x7. min/max_x2 sind ebenfalls Einzelvariablen, aber vom Typ Variant. Alle anderen definierten sind Datenfelder vom Typ Variant; y1 scheint gar nicht definiert zu sein.
Also merke:
1. Stets Option Explicit verwenden!
2. Alles, was nicht mit nachgesetztem As … definiert wurde, ist vom Typ Variant!
3. Ein Datenfeld wird idR durch die in Klammern nachgesetzte Dimensionsangabe definiert!*
   *Ausnahme: Variant mit Datenfeld bzw leere Dimensionsangabe → Redim
Gruß Luc :-?
Anzeige
AW: nom_x7 ist KEIN Datenfeld! Deshalb!
11.07.2011 15:23:10
Georg
Ja stimmt
ich habe meinen Fehler gesehen
ich habe die Variable jetzt als Dim nom_x7(4 To 23) As Double definiert
und es funktioniert
Danke
Georges
AW: Erwartet Datenfeld
11.07.2011 15:28:44
Rudi
Hallo,
ganz einfach: nom_x7 ist kein Datenfeld, sondern ein einzelner Double.
Dito min_x7, max_x7, min_x2, max_x2, nom_x2
Nebenbei: In den ganzen Definitionen sind nur jeweils die letzten Elemente Double. Alle anderen sind Variant.
Gruß
Rudi
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Fehlerbehebung bei "VBA erwartet Datenfeld"


Schritt-für-Schritt-Anleitung

Um die Fehlermeldung "Fehler beim Kompilieren: erwartet Datenfeld" in VBA zu beheben, gehe wie folgt vor:

  1. Definiere deine Variablen korrekt: Stelle sicher, dass alle Arrays, die du verwenden möchtest, auch als solche deklariert sind. Zum Beispiel:

    Dim nom_x7(4 To 23) As Double

    Anstelle von:

    Dim nom_x7 As Double
  2. Verwende Option Explicit: Füge am Anfang deines Moduls die Zeile Option Explicit hinzu. Dies zwingt dich dazu, alle Variablen zu deklarieren und hilft, Fehler zu vermeiden.

  3. Überprüfe die Dimensionierung: Achte darauf, dass alle Datenfelder mit einer Dimensionierung versehen sind. Ein Datenfeld wird durch die Klammern und die Dimensionsangabe definiert.

  4. Korrigiere nicht definierte Variablen: Achte darauf, dass alle Variablen, wie y1, vorher deklariert sind:

    Dim y1 As Integer
  5. Teste dein Makro: Starte das Makro erneut, um zu überprüfen, ob der Fehler weiterhin auftritt.


Häufige Fehler und Lösungen

  • Fehler: "vba fehler beim kompilieren erwartet ="

    • Lösung: Überprüfe, ob alle Variablen und Arrays korrekt deklariert wurden. Falsche oder fehlende As-Anweisungen können diese Fehlermeldung auslösen.
  • Fehler: Einzelvariable anstelle eines Datenfeldes

    • Lösung: Stelle sicher, dass alle Variablen, die als Datenfeld genutzt werden sollen, auch als solche deklariert sind. Zum Beispiel:
      Dim min_x7(4 To 23) As Double

Alternative Methoden

Wenn du weiterhin Probleme mit dem Fehler "vba erwartet datenfeld" hast, kannst du folgende Alternativen in Betracht ziehen:

  • Verwendung von Collections: Anstelle von Arrays kannst du auch Collections verwenden, die flexibler sind und dir mehr Möglichkeiten bieten:

    Dim nom_x As Collection
    Set nom_x = New Collection
  • Nutzung von Dictionaries: Wenn du Schlüssel-Wert-Paare speichern möchtest, sind Dictionaries eine gute Alternative:

    Dim nom_x As Object
    Set nom_x = CreateObject("Scripting.Dictionary")

Praktische Beispiele

Hier ist ein einfaches Beispiel, um den Umgang mit Arrays und die korrekte Deklaration zu verdeutlichen:

Option Explicit

Sub Beispiel()
    Dim nom_x(4 To 23) As Double
    Dim y1 As Integer

    For y1 = 4 To 23
        nom_x(y1) = y1 * 2 ' Beispielwert
    Next y1
End Sub

In diesem Beispiel wird ein Array nom_x korrekt deklariert und im Loop gefüllt.


Tipps für Profis

  • Verwende Debugging-Werkzeuge: Nutze das Debugging in VBA, um den Code Schritt für Schritt zu durchlaufen. Dies hilft dir, Fehler schnell zu finden.

  • Füge Kommentare hinzu: Kommentiere deinen Code, um die Absicht hinter Variablen und Operationen klarer zu machen.

  • Reflektiere über deine Variablen: Überlege, ob du Arrays wirklich benötigst oder ob einfache Variablen ausreichen.


FAQ: Häufige Fragen

1. Was bedeutet "vba erwartet datenfeld"? Diese Fehlermeldung tritt auf, wenn eine Variable, die als Datenfeld verwendet werden soll, nicht korrekt deklariert wurde.

2. Wie kann ich Fehler beim Kompilieren in VBA vermeiden? Nutze Option Explicit, um sicherzustellen, dass alle Variablen deklariert sind, und überprüfe die korrekte Verwendung von Arrays und Variablen.

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