Aufruf sub aus einem anderen Modul
Habe ich eine einfache Function Test()
im Module1
und ein Sub SubName()
im Module2
. Ich bin versucht zu rufen SubName()
aus Function Test()
. Wenn ich Typ:
Call Module2.SubName
- und Ausfahrt der roh -, ich bin immer ein Fehler:
Kompilieren-Fehler: Erwartet: Bezeichner
Wenn ich tippe einfach Module2
und setzen Stop
bietet es mir die Namen der SubName in "Modul2". So sieht es es, aber sieht aus wie etwas fehlt in der syntax. Ich kann nicht herausfinden, was.
- > Diese Frage vielleicht haben einige nützliche Informationen.
- Getestet habe ich den code und konnte es nicht reproduzieren Sie das Problem. Der code funktioniert wie erwartet. Siehe diese Anleitung: so erstellen Sie eine Minimale, Vollständige und Überprüfbare Beispiel
- OP, verwenden Sie keine dieser Namen (z.B. Test, "Modul2", SubName) irgendwo anders im code?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Einige weiterführende links :
Lösung zu deiner Frage :EntwederCall SubName
oder nurSubName
.Testen:
Nach einigen Tests, habe ich in der Lage den code zu knacken. Der Fehler ist NICHT die gleichen, die Sie bekommen, aber vielleicht bringen Sie uns näher an die Lösung.
Module2.
Qualifikation ist die Ursache des Fehlers? Sie waren in der Lage, den Fehler zu reproduzieren? Ich war nicht sicher. Der OP-code, wie gepostet, funktioniert einwandfrei.Module2.
ist das problem. Ich falsch sprang zum Schluss.Die Lösung ist einfach: verwenden Sie die Anweisung
und es werden genannt.
Paar klärende Bemerkungen:
Call SubName()
SubName Param1
- oder rufen SieCall SubName(Param1)
. Verwenden Sie nichtSubname(Param1)
- wenn param1 ist ein Objekt, das übergeben wird, es die Standard-Eigenschaft auf den sub, nicht das Objekt (z.B.Subname (Range("A1"))
übergibt den Wert der Zelle in der sub - aber nicht das Range-Objekt -Subname Range("A1")
passieren das Range-Objekt.Module2.SubName
- dies ist jedoch nur erforderlich, wenn Sie mehrereSubName
sub in verschiedene ModuleCall Module2.SubName
mich und es funktionierte wie erwartet. Warum denken Sie, dass die Klammern()
oder dieCall
oder dieModule2.
Qualifikation ist die Ursache des Fehlers? "Sub asub(v): MsgBox TypeName(v): End Sub
wie dieseSub test2(): asub (3.1415926): asub (True): asub (5): End Sub
Keine Zeichenfolgen.asub Range("A1")
wäreRange
, aberasub (Range("A1"))
wärestring
oderdouble
je nach Inhalt von A1.