Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
780to784
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
780to784
780to784
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

VBA Frage an Profis - Sub automatisch gestartet?

VBA Frage an Profis - Sub automatisch gestartet?
07.07.2006 12:31:25
Manfred
Hallo,
ich habe mal eine Frage an die richtigen Profis hier im Forum.
Ist es möglich, mittels VBA zu erkennen, ob eins Sub() automatisch gestartet wurde (z.B. aus einer anderen Datei, oder einem anderen Makro) oder ob sie separat gestartet wurde?
Wenn ja, dann würde ich gerne die Lösung des mir scheinbar unlösbaren Problems erfahren wollen.
Mein Gedankengang:

Sub Automatisch()
Frage = automatisch_gestartet '(ja/nein)
IF Frage = ja THEN DasEine ELSE DasAndere
End Sub

Gruß Manfred

15
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Caller-Eigenschaft
07.07.2006 12:48:52
ransi
HAllo Manfred
Bin zwar kein Profi, aber schau dir mal Caller-Eigenschaft in Hilfe an.
Das könnte dir weiterhelfen.
ransi
VBA Frage an Profis - Sub automatisch gestartet?
07.07.2006 13:22:11
Manfred
Hallo Ransi,
das ist mir zu Hoch, das verstehe ich nicht.
Ich lasse die Frage mal offen, vielleicht ist jemand in der Lage mir das in Form eines fertigen kleinen VBA zu vermitteln.
Trotzdem Danke
Gruß Manfred
AW: VBA Frage an Profis - Sub automatisch gestartet?
07.07.2006 15:45:32
Horst
"vielleicht ist jemand in der Lage mir das in Form eines fertigen kleinen VBA zu vermitteln."
Ein fertiges kleines VBA befindet sich in der Hilfe zu Caller.
mfg Horst
AW: VBA Frage an Profis - Sub automatisch gestarte
07.07.2006 16:12:25
EtoPHG
Hallo Manfred,
Hier sind einige kleine Beispiele:
https://www.herber.de/bbs/user/34923.xls
Hilft das ?
Gruss Hansueli
Anzeige
AW: VBA Frage an Profis - Sub automatisch gestartet?
07.07.2006 22:41:01
Manfred
Hallo Horst,
danke für den Hinweis, aber da habe ich schon nachgesehen und für mich nichts verständliches gefunden. Darum ja auch die bitte an die Experten mir ein passendes VBA zu posten.
Gruss Manfred
AW: VBA Frage an Profis - Sub automatisch gestartet?
07.07.2006 22:56:32
Horst
Hi,
manchmal hilft es für das ganze Leben, sich dumm zu stellen.
Auch mal die Antworten lesen.
https://www.herber.de/bbs/user/34923.xls
mfg Horst
AW: VBA Frage an Profis - Sub automatisch gestartet?
08.07.2006 16:36:48
Manfred
Sorry, wenn ich das nun wirklich nicht verstehe. Habe bisher nur mit Makrorecorder viel gemacht und etwas geändert.
Könntest du mir denn nicht mit der benötigten VBA Zeile aushelfen?
Bin wahrscheinlich zu blöd um das zu verstehen.
Wenn nicht, dann lasse die Frage bitte offen, damit verständnisvolle User mir vielleicht weiterhelfen können.
Gruss Manfred
Anzeige
AW: VBA Frage an Profis - Sub automatisch gestarte
08.07.2006 21:20:35
EtoPHG
Hallo Manfred,
Ich glaube das gegenseitige MISS-Verstehen liegt auf beiden Seiten (Frager und Antworter).
Der Code in dem Beispiel ist von mir, und ich wollte damit nur schnell zeigen:
a) Was es mit der Application.Caller Eigenschaft auf sich hat und
b) Das man Dein Anspruch Kann man feststellen wie ein Makro aufgerufen wurde... ev. mit einer Public Variablen lösen kann.
Das Makro "TesteMich" wird hier von verschiedenen Ereignissen aufgerufen:
Auto_Open und Auto_Close sind Makros, die beim Start und Ende des Arbeitsblattes ablaufen.
Worksheet_Change tritt ein, wenn etwas auf dem Blatt ändert.
Worksheet_SelectionChange tritt ein, wenn der Cursor die aktive Zelle wechselt.
funcX1 ist eine UDF (user defined function) und soll zeigen, das der Caller anders ist, wenn sie aktiv wird.
Vielleicht kannst Du ja mal genauer umschreiben, was Du denn mit Deinem Test, von wo das Makro aufgerufen wurde erreichen willst. Es könnte ja sein, dass es da noch andere und vielleicht einfachere Lösungen gibt. Was sind den für Dich die benötigten VBA Zeilen ? .
Gruss Hansueli
Anzeige
AW: VBA Frage an Profis - Sub automatisch gestarte
08.07.2006 21:51:44
Manfred
Hallo Hansueli,
es ist ganz einfach beschrieben was ich erreichen möchte.
Ich habe in einem Makro eine bestimmte Befehlszeile, die ich nicht aufrufen möchte, wenn die Sub von einer anderen Sub aus einer anderen Datei über den Befehl application.run aufgerufen wurde.
Also Befehlszeile ausführen, wenn die Sub direkt ausgeführt wird.
Und Befehlszeile nicht ausführen, wenn fremd gestartet wurde.
Geht so etwas überhaupt, das war die Frage an die Experten.
Gruss Manfred
AW: VBA Frage an Profis - Sub automatisch gestarte
08.07.2006 22:24:54
EtoPHG
Hallo Manfred,
Dafür kannst Du eben genau eine Public Variable brauchen.
z.b.

Public bAutoOpenDone as Boolean

in der der Arbeitsmappe mit dem Makro schreibst Du:

Sub Auto_Open()
bAutoOpenDone = True
End Sub

Dann kannst Du im Makro testen

If bAutoOpenDone then
' Befehle, wenn von Intern gestartet
else
' Befehle, wenn von Extern (andere Arbeitsmappe) gestartet
end if

Gruss Hansueli
Anzeige
AW: VBA Frage an Profis - Sub automatisch gestarte
08.07.2006 23:04:50
Manfred
Hallo Hansueli,
habe jetzt folgendes gemacht.

Sub startmakro()
'StartMakro in Datei "StartDatei.xls"
Workbooks.Open ("c:\manfred\FolgeDatei.xls")
Application.Run "FolgeDatei.xls!Folgemakro", True
End Sub


Sub Auto_Open()
'FolgeMakro in Datei "FolgeDatei.xls"
bAutoOpenDone = True
End Sub


Sub FolgeMakro()
If bAutoOpenDone = True Then
' Befehle, wenn von Intern gestartet
MsgBox ("Makro Direkt gestartet!")
Else
' Befehle, wenn von Extern (andere Arbeitsmappe) gestartet
MsgBox ("aus Startmakro gestartet!")
End If
End Sub

Klappt allerdings noch nicht. Was mache ich falsch?
Gruß Manfred
Anzeige
AW: VBA Frage an Profis - Sub automatisch gestarte
09.07.2006 11:08:15
EtoPHG
Hallo Manfred,
Wichtig ist, das die Public Variable in einem Modul definiert ist. Dorthin gehört auch Dein Folgemakro. Schau Dir nochmals das Beispiel an. Dort gibt es eine Public Variable mit Name
sItsMe, die ähnlich funktioniert. Also im Modul muss stehen

Public bAutoOpenDone as Boolean
Sub FolgeMakro()
If bAutoOpenDone = True Then
' Befehle, wenn von Intern gestartet
MsgBox ("Makro Direkt gestartet!")
Else
' Befehle, wenn von Extern (andere Arbeitsmappe) gestartet
MsgBox ("aus Startmakro gestartet!")
End If
End Sub

Gruss Hansueli
Anzeige
funktioniert nicht (Anlage: TestDateien)
09.07.2006 16:05:21
Manfred
Hallo Hansueli,
ich kann mir nicht helfen, aber es funktioniert nicht so, wie ich es gerne möchte. Vielleicht probierst du es selber mal mit den Testdateien.
https://www.herber.de/bbs/user/34952.xls

Die Datei https://www.herber.de/bbs/user/34953.xls wurde aus Datenschutzgründen gelöscht

Es geht darum das "Sub FolgeMakro()" in der FolgeDatei.xls einmal aus der Datei selber zu starten und ein anderes mal aus der StartDatei zu starten.
Gruss Manfred
Was funktioniert nicht ?
09.07.2006 17:23:29
EtoPHG
Hallo Manfred,
Was bitte funktioniert nicht ?
Ich habe Deine Dateien im gleichen Verzeichnis unter A.xls und B.xls abgelegt.
Für was Du den Workbook.Open im A.xls brauchst ist mir schleierhaft.
Es genügt:

Sub startmakro()
Application.Run "B.xls!Folgemakro"
End Sub

Darauf erscheint die Medlung "aus Startmakro gestartet"
Öffne ich hingegen B.xls mit EXCEL und rufe dann das FolgeMakro auf, erscheint die Meldung "Makro Direkt gestartet!"
Hier noch eine andere Variante.
In File A.xls

Sub startmakro()
x = Application.Run("B.xls!Folgemakro", False)
End Sub

In File B.xls

Sub x()
Call FolgeMakro(True)
End Sub


Sub FolgeMakro(bGestartet As Boolean)
If bGestartet = True Then
' Befehle, wenn von Intern gestartet
MsgBox ("Makro Direkt gestartet!")
Else
' Befehle, wenn von Extern (andere Arbeitsmappe) gestartet
MsgBox ("aus Startmakro gestartet!")
End If
End Sub

Vielleicht hilft Dir das zu erreichen, was Du willst.
Gruss Hansueli
Anzeige
Danke Hansueli, es klappt
09.07.2006 23:26:06
Manfred
Hallo Hansueli,
doch, das hilft mir weiter.
Vielen Dank
Gruss Manfred

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige