VBA-Modul läuft, dass andere Module
Ich bin Programmierung in VBA. Zuerst habe ich für die Erstellung einer Abfragetabelle mit Hilfe von einem makro (ich habe den code dafür) und danach mit Hilfe von Makros muss ich anwenden von Formeln, die Daten in der Abfragetabelle. Das problem, das ich bin vor ist, dass die Abfragetabelle wird nur angezeigt, nachdem der Sub, in dem sein code ist, hat mit der Arbeit fertig. Das bedeutet, dass ich nicht den code, der generiert die Formeln in, weil es noch keine Daten für die Formeln erzeugt werden.
Die Idee jetzt ist, schreiben Sie ein Modul, das führt zu anderen Modulen:
Sub moduleController()
Run "Module1"
Run "Module2"
End Sub
Dieser gibt die Fehlermeldung:
Laufzeitfehler 1004 - kann nicht führen Sie das makro "Makroname". Das makro ist möglicherweise nicht verfügbar, in dieser Arbeitsmappe oder alle Makros deaktiviert werden kann.
Was die Lösung sein könnte? Vielleicht gibt es eine andere Lösung für mein QueryTable-be-problem?
- Es gibt zwei mögliche Probleme mit dem QueryTable. 1.) Sind Sie erfrischend die Abfrage nach der Sie es hinzufügen? 2.) Standardmäßig werden neue Abfragen regeneriert in den hintergrund. Wenn Sie sich nicht ändern, dass dann das makro nicht warten, für die Abfrage zu beenden. Aktualisieren Sie Ihre Abfrage mit
.Refresh BackgroundQuery:=False
.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Solange die Makros in Frage zu stellen, sind in der gleichen Arbeitsmappe und überprüfen Sie die Namen existieren, können Sie rufen die Makros aus jedem anderen Modul vom Namen, nicht vom Modul.
So, wenn Sie in Module1 Sie hatte zwei Makros Makro1 und Makro2 und in "Modul2" Sie hatte Makro3 und Makro 4, dann in einem anderen makro könnte man Sie bezeichnen alle:
Ist "Module1" Teil der selben Arbeitsmappe, die enthält "moduleController"?
Wenn nicht, können Sie rufen Sie die öffentliche Methode von "Modul1" mit
Application.Run someWorkbook.xlsm!methodOfModule
.Ich habe gerade etwas neues gelernt Dank der Artiso. Ich gab jedem Modul einen Namen in der Eigenschaften-box. Diese Namen waren auch das, was ich im Modul deklarierten. Wenn ich versuchte, Sie zu nennen, meine zweite Modul, hielt ich immer eine Fehlermeldung: Compile error: Expected variable oder Prozedur, nicht Modul
Nach der Lektüre Artiso ' s Kommentar oben über keine mit dem gleichen Namen, umbenannt habe ich mein zweites Modul aus dem ersten, und das problem ist gelöst. Interessante Sachen! Danke für die info Artiso!
Im Fall meiner Erfahrung, ist unklar:
Modul-Name: AllFSGroupsCY
Public Sub AllFSGroupsCY()
Modul-Name: AllFSGroupsPY
Public Sub AllFSGroupsPY()
Vom AllFSGroupsCY()