Discussion:
'Private' SUB aus anderem Modul aufrufen?
(zu alt für eine Antwort)
unknown
2006-08-01 14:02:15 UTC
Permalink
Moin, Moin!

Wie kann ich, klar dass es hier um Tests und nicht das normale Leben
geht, mit SUB allein oder gar PRIVATE SUB deklarierte Makros aus einem
anderen Modul aufrufen?

Im konkreten Fall soll die bewusste SUB für Notfälle eigenständig sein
weswegen sie aus dem eigentlichen Code ausgeklammert wurde. Nun will ich
den Hauptcode, bzw. Änderungen daran, an anderer Stelle testen (damit
das Chaos ein geordnetes Cahos bleibt...) und da bräuchte ich den
ausgeklammerten Programmteil. OK, die SUB zu Publizieren wäre das
Einfachste...
--
Eric March

Kenne die Vergangenheit. In der Unwissenheit über die Vergangenheit
liegt das Verderben der Zukunft.
Thomas Gahler
2006-08-01 20:27:46 UTC
Permalink
Hallo Eric
Wie kann ich, klar dass es hier um Tests und nicht das normale Leben geht,
mit SUB allein oder gar PRIVATE SUB deklarierte Makros aus einem anderen
Modul aufrufen?
Du kannst eine 'Private Sub' im gleichen Modul aufrufen.
Du kannst eine 'Sub' im gleichen Projekt aufrufen (weil sie auch ohne
'Public' bereits public ist)


Sub Demo()
subTest
Call subTest
End Sub

Private Sub subTest()
MsgBox "Hallo Welt"
End Sub
--
Thomas Gahler
MVP für WordVBA
Co-Autor von »Microsoft Word-Programmierung.
Das Handbuch« (MS Press)

- Windows XP (SP2), Office XP (SP3)
unknown
2006-08-02 19:27:08 UTC
Permalink
Post by Thomas Gahler
Hallo Eric
Wie kann ich, klar dass es hier um Tests und nicht das normale Leben geht,
mit SUB allein oder gar PRIVATE SUB deklarierte Makros aus einem anderen
Modul aufrufen?
Du kannst eine 'Private Sub' im gleichen Modul aufrufen.
Du kannst eine 'Sub' im gleichen Projekt aufrufen (weil sie auch ohne
'Public' bereits public ist)
Sub Demo()
subTest
Call subTest
End Sub
Private Sub subTest()
MsgBox "Hallo Welt"
End Sub
Das klappt nicht...
Projekt sei die Normal.Dot. Modul Eins enthalte die wichtigen Makros,
Modul Zwei ist ein Testspielplatz.
Deklariere ich eine Private SUb in Modul Zwei und rufe sie von Eins aus
mit dem Namen auf bekomme ich "Sub oder Function nicht definiert".

Wenn ich eine Dummheit begangen habe, dann vergessen zu erwähnen, dass
es sich in W97 abspielt.
--
Eric March - eric.march(spambremse)@gmx.net

»Kenne die Vergangenheit. In der Unwissenheit über die Vergangenheit
liegt das Verderben der Zukunft.«
Thomas Gahler
2006-08-03 05:54:34 UTC
Permalink
Hallo Eric
Post by unknown
Das klappt nicht...
Projekt sei die Normal.Dot. Modul Eins enthalte die wichtigen Makros,
Modul Zwei ist ein Testspielplatz.
Deklariere ich eine Private SUb in Modul Zwei und rufe sie von Eins aus
mit dem Namen auf bekomme ich "Sub oder Function nicht definiert".
Eine 'Private Sub' kann nur innerhalb des gleichen Moduls aufggerufen
werden, das ist Konzept von VB
--
Thomas Gahler
MVP für WordVBA
Co-Autor von »Microsoft Word-Programmierung.
Das Handbuch« (MS Press)

- Windows XP (SP2), Office XP (SP3)
unknown
2006-08-03 17:44:05 UTC
Permalink
Post by Thomas Gahler
Hallo Eric
Post by unknown
Das klappt nicht...
Projekt sei die Normal.Dot. Modul Eins enthalte die wichtigen Makros,
Modul Zwei ist ein Testspielplatz.
Deklariere ich eine Private SUb in Modul Zwei und rufe sie von Eins aus
mit dem Namen auf bekomme ich "Sub oder Function nicht definiert".
Eine 'Private Sub' kann nur innerhalb des gleichen Moduls aufggerufen
werden, das ist Konzept von VB
Und ich hoffte auf einen Hintereingang für Testzwecke :-)
--
Eric March - eric.march(spambremse)@gmx.net

»Kenne die Vergangenheit. In der Unwissenheit über die Vergangenheit
liegt das Verderben der Zukunft.«
Thomas Gahler
2006-08-04 04:31:19 UTC
Permalink
Hallo Eric
Post by unknown
Post by Thomas Gahler
Eine 'Private Sub' kann nur innerhalb des gleichen Moduls aufggerufen
werden, das ist Konzept von VB
Und ich hoffte auf einen Hintereingang für Testzwecke :-)
Da gibt es ja zig Möglichkeiten

- hat die Sub keine Argumente, dann im VBA-Editor den Cursor in die Sub
setzen und Ausführen oder im Einzelschritt durchführen
- das 'Public' temporär entfernen
- benötigt die Sub Argument, dann rasch einen Dreizeiler temporär einfügen
Sub x()
Call DeineSub Argument1, Argument2, ...
End Sub

usw.
--
Thomas Gahler
MVP für WordVBA
Co-Autor von »Microsoft Word-Programmierung.
Das Handbuch« (MS Press)

- Windows XP (SP2), Office XP (SP3)
unknown
2006-08-04 19:35:22 UTC
Permalink
Post by Thomas Gahler
Hallo Eric
Post by unknown
Post by Thomas Gahler
Eine 'Private Sub' kann nur innerhalb des gleichen Moduls aufggerufen
werden, das ist Konzept von VB
Und ich hoffte auf einen Hintereingang für Testzwecke :-)
Da gibt es ja zig Möglichkeiten
- hat die Sub keine Argumente, dann im VBA-Editor den Cursor in die Sub
setzen und Ausführen oder im Einzelschritt durchführen
- das 'Public' temporär entfernen
- benötigt die Sub Argument, dann rasch einen Dreizeiler temporär einfügen
Sub x()
Call DeineSub Argument1, Argument2, ...
End Sub
usw.
...nur eben ein kurfristiges externes Aufrufen ist nicht drin. Wird wohl
heißen das Private so lange zu privatisieren :-)
--
Eric March - eric.march(spambremse)@gmx.net

»Kenne die Vergangenheit. In der Unwissenheit über die Vergangenheit
liegt das Verderben der Zukunft.«
Cindy M -WordMVP-
2006-08-02 13:02:27 UTC
Permalink
Hi Eric,

Warum müsste das "Sub" als privat deklariert werden? Weil es gegen aussen
(sprich Extras/Makro) nicht sichtbar sein soll? Dann oben in das Modul
folgende Zeile eingeben: Option Private Module
Post by unknown
Wie kann ich, klar dass es hier um Tests und nicht das normale Leben
geht, mit SUB allein oder gar PRIVATE SUB deklarierte Makros aus einem
anderen Modul aufrufen?
Im konkreten Fall soll die bewusste SUB für Notfälle eigenständig sein
weswegen sie aus dem eigentlichen Code ausgeklammert wurde. Nun will ich
den Hauptcode, bzw. Änderungen daran, an anderer Stelle testen (damit
das Chaos ein geordnetes Cahos bleibt...) und da bräuchte ich den
ausgeklammerten Programmteil. OK, die SUB zu Publizieren wäre das
Einfachste...
Cindy Meister
Co-Autor von »Microsoft Word-Programmierung Das Handbuch« (MS Press)
http://www.word.mvps.org
http://homepage.swissonline.ch/cindymeister

Rückfragen & Antworten nur in der Newsgroup, bitte!
unknown
2006-08-02 19:21:36 UTC
Permalink
Post by Cindy M -WordMVP-
Hi Eric,
Warum müsste das "Sub" als privat deklariert werden? Weil es gegen aussen
(sprich Extras/Makro) nicht sichtbar sein soll? Dann oben in das Modul
folgende Zeile eingeben: Option Private Module
Ja, es hat im Grunde nur mit der Übersichtlichkeit zu tun. Ob mir die
Gesamtdeklaration allerdings gefällt müsst eich noch rausfinden :-)
Post by Cindy M -WordMVP-
Post by unknown
Wie kann ich, klar dass es hier um Tests und nicht das normale Leben
geht, mit SUB allein oder gar PRIVATE SUB deklarierte Makros aus einem
anderen Modul aufrufen?
Im konkreten Fall soll die bewusste SUB für Notfälle eigenständig sein
weswegen sie aus dem eigentlichen Code ausgeklammert wurde. Nun will ich
den Hauptcode, bzw. Änderungen daran, an anderer Stelle testen (damit
das Chaos ein geordnetes Cahos bleibt...) und da bräuchte ich den
ausgeklammerten Programmteil. OK, die SUB zu Publizieren wäre das
Einfachste...
Cindy Meister
Co-Autor von »Microsoft Word-Programmierung Das Handbuch« (MS Press)
http://www.word.mvps.org
http://homepage.swissonline.ch/cindymeister
Rückfragen & Antworten nur in der Newsgroup, bitte!
--
Eric March - eric.march(spambremse)@gmx.net

»Kenne die Vergangenheit. In der Unwissenheit über die Vergangenheit
liegt das Verderben der Zukunft.«
Loading...