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

Forumthread: Variable oder Prozedur anstelle Modul erwartet

Variable oder Prozedur anstelle Modul erwartet
15.12.2008 12:16:15
Peter
Guten Tag
Beim Ausführen des untenstehenden Codes wird spBuchstabe (dritte Zeile) markiert und ein Kompilierungsfehler gemeldet : "Variable oder Prozedur anstelle eines Moduls erwartet".
Der Code ist hinter einem Worksheet und die Funktion "spBuchstabe" ist in einem Modul abgelegt.
Mir ist nicht klar, was da nicht funktioniert. Kann mir jemand helfen?
Danke, Peter
Sub Worksheet_Deactivate()
'Anfang und Ende eines bestehenden Bereiches anpassen
Dim strSpa As String
strSpa = spBuchstabe(Range("k_Daten").Row)
Set Bereich = Worksheets(Me.Name).Range(strSpa & lngAnf, strSpa & lngEnd)
ActiveWorkbook.Names.Add _
Name:="k_Daten", _
RefersTo:=Bereich, Visible:=True
End Sub



Public Function spBuchstabe(Spalte As Long) As String
Dim rg As String
rg = Cells(1, Spalte).Address(True, False)
spBuchstabe = Left(rg, InStr(1, rg, "$") - 1)
End Function


Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Variable oder Prozedur anstelle Modul erwartet
15.12.2008 12:28:00
Daniel
Hi
bei mir funktioniert der Code, zumindest bis zu der angegebenen Zeile.
vielleicht solltest du mal die Datei mit dem Fehler hochladen?
Gruß, Daniel
AW: Variable oder Prozedur anstelle Modul erwartet
15.12.2008 13:37:05
Peter
Hallo Daniel
Danke für die Antwort.
Das Problem tritt auch in der hochgeladenen Datei auf, wenn Tabelle1 verlassen wird.
Danke und Gruss, Peter
https://www.herber.de/bbs/user/57631.xls
Anzeige
AW: Variable oder Prozedur anstelle Modul erwartet
15.12.2008 13:43:38
Uwe
Hi Peter,
Du hast dem Modul den gleichen Namen gegeben wie der Funktion!!! Benenne das Modul mal um, z.B. in Buchstabe, dann findet Excel auch die Funktion und bricht nicht vorher ab, weil spBuchstabe ein Modul ist.
Gruß
Uwe
(:o)
AW: Variable oder Prozedur anstelle Modul erwartet
15.12.2008 14:19:31
Peter
Hallo Uwe
Vielen Dank!
Gruss, Peter
;
Anzeige
Anzeige

Infobox / Tutorial

Fehlerbehebung: Variable oder Prozedur anstelle Modul erwartet in VBA


Schritt-für-Schritt-Anleitung

  1. Überprüfe die Modulnamen: Stelle sicher, dass der Name des Moduls nicht mit dem Namen einer Funktion oder Variable in Konflikt steht. Wenn dein Modul den gleichen Namen wie die Funktion spBuchstabe hat, benenne es um, z.B. in Buchstabe.

  2. Code anpassen: Gehe zu deinem VBA-Editor (Alt + F11) und ändere den Namen des Moduls. Klicke mit der rechten Maustaste auf das Modul und wähle "Umbenennen".

  3. Funktion testen: Nach der Umbenennung kannst du den Code erneut ausführen, um zu überprüfen, ob der Fehler "variable oder prozedur anstelle eines moduls erwartet" weiterhin auftritt.

  4. Fehlerhafte Zeile identifizieren: Wenn der Fehler weiterhin besteht, überprüfe die Zeile strSpa = spBuchstabe(Range("k_Daten").Row). Stelle sicher, dass k_Daten als benannter Bereich korrekt definiert ist.

  5. Debugging: Setze Haltepunkte im Code, um zu sehen, an welcher Stelle der Fehler auftritt.


Häufige Fehler und Lösungen

  • Problem: "Variable oder Prozedur anstelle eines Moduls erwartet"

    • Lösung: Benenne das Modul um, das den gleichen Namen wie die Funktion hat.
  • Problem: Ungültige Bereichsreferenz

    • Lösung: Überprüfe, ob der benannte Bereich k_Daten korrekt definiert ist und auf die richtige Zelle verweist.

Alternative Methoden

Falls das Umbenennen des Moduls nicht hilft, kannst du folgende Alternativen ausprobieren:

  • Verwendung von Subroutinen: Anstatt eine Funktion zu verwenden, könntest du die Logik in eine Subroutine einfügen, die den gleichen Zweck erfüllt.
Sub BeispielSub()
    Dim strSpa As String
    strSpa = Cells(1, 1).Address(True, False) ' Beispiel für eine direkte Zellreferenz
    ' Weitere Logik hier
End Sub
  • Fehlerbehandlung einfügen: Verwende On Error Resume Next, um den Fehler abzufangen und zu analysieren, was schiefgeht.

Praktische Beispiele

Hier ist ein Beispiel, wie du eine Funktion und ein Modul korrekt einrichten kannst:

  1. Modulcode:
Public Function spBuchstabe(Spalte As Long) As String
    Dim rg As String
    rg = Cells(1, Spalte).Address(True, False)
    spBuchstabe = Left(rg, InStr(1, rg, "$") - 1)
End Function
  1. Worksheet-Code:
Sub Worksheet_Deactivate()
    Dim strSpa As String
    strSpa = spBuchstabe(Range("k_Daten").Row)
    Set Bereich = Worksheets(Me.Name).Range(strSpa & lngAnf, strSpa & lngEnd)
    ActiveWorkbook.Names.Add Name:="k_Daten", RefersTo:=Bereich, Visible:=True
End Sub

Tipps für Profis

  • Modulnamen konsistent halten: Um Verwirrungen zu vermeiden, wähle eindeutige Namen für Module, die nicht mit Funktionen oder Variablen in Konflikt stehen.
  • Namen von Funktionen dokumentieren: Füge Kommentare in deinen Code ein, um die Funktionsweise zu erklären und zukünftige Probleme zu vermeiden.
  • Versionskontrolle: Halte deine Excel- und VBA-Versionen aktuell, um von den neuesten Funktionen und Fehlerbehebungen zu profitieren.

FAQ: Häufige Fragen

1. Warum erhalte ich den Fehler "variable oder prozedur anstelle eines moduls erwartet"? Dieser Fehler tritt auf, wenn du ein Modul und eine Funktion mit dem gleichen Namen hast. Ändere den Modulnamen.

2. Wie kann ich sicherstellen, dass mein Code ohne Fehler läuft? Verwende Debugging-Tools im VBA-Editor, setze Haltepunkte und teste jeden Teil deines Codes schrittweise.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige