Excel VBA #Name durch..?
Guten Tag,
ich bin gerade dabei meine eigenen Funktionen mittels VBA zu erstellen, da ist mir folgendes aufgefallen.
Wenn ich ein Modul über (Leiste oben) Einfügen -> Modul erstelle, erscheint beim Aufrufen meiner Funktion der #Name Fehler.
Wenn ich jedoch auf ein Tabellenblatt, bspw. Tabelle6 (XYZ), im Projektmanager mit rechtsklick anwähle und dann auf Einfügen -> Modul klicke, ist der Fehler behoben. Wann benutzt man welche Herangehensweise?
schon mal vielen Dank im voraus
1 Antwort
Das hängt davon ab wo deine Sub/Funktion hinterlegt ist im VBA Projekt. Man kann ja VBA Code an "DieseArbeitsmappe" binden, an das Arbeitsblatt (Tabelle) selbst, an eine UserForm (falls vorhanden), oder an das externe Modul (hier "Modul1"). In jeder kann es deine gleichnamige Sub/Funktion geben als VBA Code.
Deswegen muss man unter Umständen beim Aufruf VBA schon die Info mitgeben, wo er diese Funktion findet, ansonsten bekommst du beim Call der Sub/Funktion einen #Name Fehler. Du greifst dann auf den falschen Bereich zu, wo diese Sub/Funktion eben nicht existiert.
Die Sub/Funktion Tabelle1.Test() ist eben nicht gleich Test().
Du kannst das streckenweise umgehen, in dem du die Sub/Funktion gezielt als öffentlich (Public) deklarierst: "Public Function Test()". Ohne Angabe sind es üblicherweise "Private Funtion Test()" (wenn ich mich korrekt erinnere) und damit nur dort bekannt, wo diese hinterlegt sind und benötigen dann bei einem Call außerhalb seines Bereiches eine direkte Aufforderung, wie bspw. Tabelle1.Test()
Ich hoffe, ich hab es verständlich erklärt. Bin jetzt auch kein totaler VBA Crack.