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

Forumthread: VBA Funktion oder Variable erwartet

VBA Funktion oder Variable erwartet
14.07.2018 09:06:53
Marc

Servus alle,
ich habe ein kleines Problem. Ich habe einen VBA Code der in einer DAtei funktioniert 1 zu 1 in eine andere Datei kopiert und erhalte jetzt immer die Fehlermeldung "Fehler beim kompilieren - Funktion oder Variable erwartet"
Leider kann ich überhaupt nicht nachvollziehen wieso ich diese Meldung erhalte. Woran kann das denn liegen?
Private Sub Worksheet_Change(ByVal Target As Range)
Dim z, s, dat
z = Target.Row
s = Target.Column
If z  2 Or s  2 Then Exit Sub
dat = Cells(z, s)
If Not IsDate(dat) Or dat > Now Or (Now - dat) > 365 Then
MsgBox "Kein gültiges Datum!"
Application.EnableEvents = False
Cells(z, s) = ""
Application.EnableEvents = True
Exit Sub
End If
End Sub

Anzeige

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
bei welcher Eingabe kommt denn der Fehler? owT
14.07.2018 09:15:27
Matthias
AW: bei welcher Eingabe kommt denn der Fehler? owT
14.07.2018 09:16:34
Marc
Wenn ich das Makro ausführe wird mir immer "Now" angezeigt und blau markiert
was gibst Du in B2 ein ? evtl hilft Date statt Now
14.07.2018 09:19:00
Matthias
.
Anzeige
AW: was gibst Du in B2 ein ? evtl hilft Date statt Now
14.07.2018 09:19:50
Marc
ich gebe ein Datum ein z.B. 05.07.2018
bei mir kein Fehler bei Datum
14.07.2018 09:23:35
Matthias
Es kommt nur ein Fehler wenn ich Text eingebe.
Laufzeitfehler13
Typen unverträglich.
Laufen naoch andere Codes (Add-In)?
Wenn Ja, schalt die mal aus.
AW: bei mir kein Fehler bei Datum
14.07.2018 09:32:56
Marc
Aaaaaah guter Hinweis ich habe den Fehler gefunden. Ich hatte ein Modul mit dem Namen "Now" anscheinend stehen die beiden Sachen sich im Weg. Jetzt habe ich es umbenannt zu "Now1" und sieh da es funktioniert ^^
Danke für deine Hilfe Matthias
Anzeige
ja Now ist ein VBA Schlüsselwort
14.07.2018 09:37:19
Matthias
Now ist eine VBA-Funktion
und gibt das aktuelle Systemdatum und die aktuelle Systemzeit zurück
Solche Dinge sollte man immer vermeiden ;-)
Schö.WE
Gruß Matthias
Option Explicit und nicht deklarierte Variable?
14.07.2018 09:31:05
Matthias
Hallo
Du hast Option Explicit ganz oben stehen und im Code
eine Variable die nicht deklariert ist?
Kann das sein?
Gruß Matthias
Anzeige
AW: Option Explicit und nicht deklarierte Variable?
14.07.2018 09:33:55
Marc
Ja genau das ist so Matthias
;
Anzeige
Anzeige

Infobox / Tutorial

VBA Funktion oder Variable erwartet


Schritt-für-Schritt-Anleitung

  1. Öffne den Visual Basic for Applications (VBA) Editor:

    • Drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Kopiere den Code:

    • Stelle sicher, dass dein Code korrekt ist. Hier ist der Beispielcode aus dem Forum:
    Private Sub Worksheet_Change(ByVal Target As Range)
       Dim z, s, dat
       z = Target.Row
       s = Target.Column
       If z < 2 Or s < 2 Then Exit Sub
       dat = Cells(z, s)
       If Not IsDate(dat) Or dat > Now Or (Now - dat) > 365 Then
           MsgBox "Kein gültiges Datum!"
           Application.EnableEvents = False
           Cells(z, s) = ""
           Application.EnableEvents = True
           Exit Sub
       End If
    End Sub
  3. Überprüfe die Variablen:

    • Achte darauf, dass alle Variablen deklariert sind, besonders wenn Option Explicit verwendet wird.
  4. Benutze keine reservierten Wörter:

    • Vermeide es, Variablen oder Module mit Namen wie Now zu benennen, da dies zu dem Fehler „Fehler beim kompilieren - Funktion oder Variable erwartet“ führen kann.

Häufige Fehler und Lösungen

  • Fehler: "Fehler beim kompilieren - Funktion oder Variable erwartet":

    • Dieser Fehler tritt häufig auf, wenn du ein Schlüsselwort von VBA als Variablen- oder Modulenamen verwendest.
    • Lösung: Benenne das Modul oder die Variable um.
  • Fehler: "Typen unverträglich":

    • Dies passiert, wenn du einen unerwarteten Datentyp verwendest, z.B. wenn du Text in ein Datumsfeld eingibst.
    • Lösung: Überprüfe, welche Daten du eingibst und stelle sicher, dass sie dem erwarteten Typ entsprechen.

Alternative Methoden

  • Verwendung von Date statt Now:

    • Falls du nur das aktuelle Datum benötigst, kannst du Date verwenden, um mögliche Konflikte mit dem Namen Now zu vermeiden.
  • Zusätzliche Fehlerbehandlung:

    • Füge eine Fehlerbehandlungsroutine hinzu, um den Code robuster zu machen:
    On Error GoTo ErrorHandler
    ' dein Code hier
    Exit Sub
    
    ErrorHandler:
       MsgBox "Ein Fehler ist aufgetreten: " & Err.Description

Praktische Beispiele

  • Beispiel 1: Gültigkeitsprüfung eines Datums:

    • Der folgende Code überprüft, ob das eingegebene Datum in der richtigen Form ist:
    If Not IsDate(dat) Then
       MsgBox "Bitte geben Sie ein gültiges Datum ein."
    End If
  • Beispiel 2: Verwendung von Option Explicit:

    • Setze ganz oben im Modul Option Explicit, um sicherzustellen, dass alle Variablen deklariert sind:
    Option Explicit

Tipps für Profis

  • Nutze Debug.Print:

    • Verwende Debug.Print, um den Inhalt von Variablen während der Ausführung zu überprüfen.
  • Vermeide globale Variablen:

    • Reduziere die Verwendung von globalen Variablen, um mögliche vba variable oder prozedur anstelle eines moduls erwartet-Fehler zu vermeiden.
  • Regelmäßige Backups:

    • Mache regelmäßig Backups deiner Excel-Dateien, um Datenverlust bei Kompilierungsfehlern zu vermeiden.

FAQ: Häufige Fragen

1. Warum wird mir der Fehler "end sub erwartet" angezeigt? Der Fehler "end sub erwartet" tritt auf, wenn der VBA-Compiler das Ende einer Sub-Prozedur nicht finden kann, oft durch fehlende oder falsch platzierte End-Anweisungen.

2. Was bedeutet "vba erwartet ="? Dieser Fehler deutet darauf hin, dass eine Zuweisung fehlt oder eine falsche Syntax verwendet wird. Überprüfe die Zeile, die den Fehler auslöst, und stelle sicher, dass eine gültige Zuweisung vorliegt.

3. Wie kann ich sicherstellen, dass meine Variablen deklariert sind? Aktiviere Option Explicit am Anfang deines Moduls, um sicherzustellen, dass alle Variablen deklariert werden, bevor sie verwendet werden.

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