Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1308to1312
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Makro in "anderem" Workbook aufrufen mit Paramete

Makro in "anderem" Workbook aufrufen mit Paramete
14.04.2013 10:10:53
ing.grohn
Hallo Forum,
mein Schlauch ist platt vom drauf stehen!
wenn ich ein Makro in einem "anderen" Workbook aufrufe, gebe ich ein:
Application.Run "RechKanzlei.xls!Summen"

(als Beispiel). Wie muss ich das machen, wenn Parameter übergeben werden?
Application.Run "Kanzlei.xls!HistorieSchreiben(ProzReg, strName,Rechnr,Dateiname)"

macht nur Syntaxfehler!?
Kann mir jemand helfen?
Recht herzlichen Dank für den Beistand
Mit freundlichen Grüßen
Albrecht

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Makro in "anderem" Workbook aufrufen mit Paramete
14.04.2013 10:21:21
Hajo_Zi
Hallo Albrecht,
Application.Run "PERSONAL.XlSB!MarkBerIdenfiz", 1, 2, 3, 4

AW: Makro in "anderem" Workbook aufrufen mit Paramete
14.04.2013 10:34:36
ing.grohn
Hallo Hajo,
vielen Dank und einen schönen Sonntag
Mit freundlichen Grüßen
Albrecht

Nachtrag: muss als FunKtion behandelt werden!?
14.04.2013 11:35:35
ing.grohn

s = Application.Run("Kanzlei.xls!HistorieSchreiben", ProzReg, strName, RechNr, Dateiname)

obwohl "HistorieSchreiben" ne Prozedur ist!?
mfG
Albrecht

Application.Run als Funktion?
14.04.2013 12:33:08
Erich
Hi Albrecht,
was meinst du mit deiner Frage?
In
s = Application.Run("Kanzlei.xls!HistorieSchreiben", ProzReg, strName, RechNr, Dateiname)
verwendest du Application.Run als Funktion, den Rückgabewert speicherst du in s.
Was meinst du, welchen Wert für s der Aufruf "Application.Run(...)" zurückliefert/liefern soll?
Das Makro "HistorieSchreiben" liefert nur dann einen Wert zurück, wenn es eine Function (oder Property) ist.
Ist "HistorieSchreiben" eine Sub - was sollte dann nachher in der Variablen s stehen?
Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich

Anzeige
AW: Application.Run als Funktion?
14.04.2013 12:46:29
ing.grohn
Hallo Erich,
in dem Workbook "Kanzlei.xls" gibts die Procedur "HistorieSchreiben" mit den 4 Parametern.
In dem Workbook rufe ich die Prozedur ganz "normal" mit "Call HistorieSchreiben (p1, p2, p3, p4)" auf und das funktioniert ohne Probleme (übrigens ohne Call ist die Zeile auch rot unterlegt, Syntaxfehler).
Schreibe ich nun: "Application.Run("Kanzlei.xls!HistorieSchreiben", ProzReg, strName, RechNr, Dateiname)"
wird die Zeile ebenfalls rot hervorgehoben!
Mit "s=Application.Run("Kanzlei.xls!HistorieSchreiben", ProzReg, strName, RechNr, Dateiname)" funktionierts!
hier noch mal der Kopf der Prozedur:
Sub HistorieSchreiben(ProzReg As String, strName As String, Grund As String, DatName As String)

Mit freundlichen Grüßen
Albrecht

Anzeige
es sind die Klammern
14.04.2013 13:28:40
Erich
Hi Albrecht,
das sind richtige Schreibweisen:
Call HistorieSchreiben(p1, p2, p3, p4)
HistorieSchreiben p1, p2, p3, p4
Application.Run "Kanzlei.xls!HistorieSchreiben", ProzReg, strName, RechNr, Dateiname
s = Application.Run("Kanzlei.xls!HistorieSchreiben", ProzReg, strName, RechNr, Dateiname)
und das sind falsche Schreibweisen:
Call HistorieSchreiben p1, p2, p3, p4
HistorieSchreiben(p1, p2, p3, p4)
Application.Run("Kanzlei.xls!HistorieSchreiben", ProzReg, strName, RechNr, Dateiname)
Es kommt sehr auf die Klammern an. Dazu steht auch etwas in der VBA-Hilfe zur Call-Anweisung.
Hajos Vorschlag war natürlich auch schon richtig - da kommen keine Klammern vor.
Mein Vorschlag: Wenn du Application.Run nicht wirklich brauchst, lass es weg und verwende
Call HistorieSchreiben (p1, p2, p3, p4)
oder
HistorieSchreiben p1, p2, p3, p4
Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich

Anzeige
AW: es sind die Klammern
14.04.2013 14:41:11
ing.grohn
Hallo Erich,
junge, junge, hab mir bisher keine Gedanken über die Klammern gemacht. Vielmehr glaubte ich: mehr als 1 Parameter macht Call erforderlich. Klammern war für mich "normal", weil ja auch die Prozeduren und Funktionen Klammern haben.
sehr sehr hilfreich!!
Du bist also der Meinung: besser eine Prozedur doppelt schreiben/haben als Run aufrufen?
Mit freundlichen Grüßen
Albrecht

AW: es sind die Klammern
14.04.2013 16:52:19
Erich
Hi Albrecht,
"Du bist also der Meinung: besser eine Prozedur doppelt schreiben/haben als Run aufrufen?"
Nein - der Meinung bin ich nun wirklich nicht! Ich hattre doch geschrieben:
"Wenn du Application.Run nicht wirklich brauchst, lass es weg und verwende Call ..."
Dabei war ich (fälschlich) davon ausgegangen, dass du 'nur' ein Problem mit der Syntax von "Call" hast.
Nun habe ich oben im Thread noch mal nachgesehen. Du willst eine Prozedur in einem anderen Workbook aufrufen,
und dazu brauchst du Application.Run.
Noch einen schönen Sonntagabend! - Grüße aus Kamp-Lintfort von Erich

Anzeige
AW: es sind die Klammern
14.04.2013 16:58:28
ing.grohn
Hallo Erich,
mit Call hatte ich keine Probleme!
(benutze ich generell!)
mir ging es nur um den Aufruf eine Prozedur in einem zweiten Workbook!
(hatte ich bsiher nur ohne Parameterübergabe gebraucht)
Vielen Dank für die Klarheit
Mit freundlichen Grüßen
Albrecht
(und eine schöne Woche)

Meist reicht Call, manchmal muss es aber Run sein!
16.04.2013 20:38:28
Luc:-?
Gruß Luc :-?
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige
Archiv - Verwandte Themen