Microsoft Office Forum [ www.Office-Fragen.de ] >> READONLY <<

Microsoft Office 2003-2019 => Excel => Thema gestartet von: Herberthe am Januar 24, 2016, 16:08:57 Nachmittag

Titel: Sub in "Diese Arbeitsmappe" aus "Modul1 aufrufen
Beitrag von: Herberthe am Januar 24, 2016, 16:08:57 Nachmittag
Hallo Alle Miteinander

Ich habe ein Makro das mir nach einer eingestellten meine Datei schliesst.
Dies Makro befindet sich in
Microsoft Excel Objekte
       Diese Arbeitsmappe
Sub Nach_Zeit_beenden()                                                   
Zeit = Now + TimeValue("00:01:00")                             ' Läuft 1 min
Application.OnTime Zeit, "Speichern_und_Beenden"     ' Sub "Speichern und Beenden" aufrufen
End Sub


Das Sub "Speichern_und Beenden" befindet sich in
Module
    Modul1
Sub Speichern_und_Beenden()
Dateiname = Application.ThisWorkbook.Name   
Workbooks(Dateiname).Close SaveChanges:=True 
End Sub

Das ganze funktioniert und die Datei schliesst nach angegebener Zeit

Wenn ich jetzt in Modul 1 vor dem speichern noch eine Sub xyz aufrufen möchte die sich in
Microsoft Excel Objekte
       Diese Arbeitsmappe

befindet,(weil sie da auch beim normalen speichern oder beenden aufgerufen wird) kommt die Fehlermeldung "Sub oder Function nicht definiert".

Ich könnte diese Sub xyz auch in auch in
Module
    Modul1
Sub xyz
einauen, dann funktioniert es.
Dies Sub ist dann aber 2(zwei) mal vorhanden.

Wie schaffe ich es aus Module/Modul1 dies Sub xyz aus "diese Arbeitsmappe aufzurufen".

Weiss jemand Abhilfe

Titel: Antw: Sub in "Diese Arbeitsmappe" aus "Modul1 aufrufen
Beitrag von: Herbert Grom am Januar 24, 2016, 17:14:22 Nachmittag
Hallo Namenskollege,

zuerst solltest du keine normalen Makros (Sub ...) in "DieseArbeitsmappe" haben. Diese gehören AUSSCHLIESSLICH in "StandardModul"e!

Dein Problem könntest du lösen, wenn du in "DieseArbeitsmappe" eine "AutoOpen"-Routine (Makro) einbaust und dort das Makro "Sub Nach_Zeit_beenden()" startest, wenn ich dich richtig verstanden habe. Probiers mal.

Servus
Titel: Antw: Sub in "Diese Arbeitsmappe" aus "Modul1 aufrufen
Beitrag von: Herberthe am Januar 24, 2016, 19:18:04 Nachmittag
Hallo Herbert G.
Danke für die Antwort.
Funktioniert leider nicht.
Allerdings nicht mit AutoOpen sondern mit Sub workbook_open() da die Datei auch von anderen Prgrammen aufgerufen werden kann.

Wie ist das gemeint"zuerst solltest du keine normalen Makros (Sub ...) in "DieseArbeitsmappe" haben. Diese gehören AUSSCHLIESSLICH in "StandardModul"e!"
Ich schaffe das meinen Code einigermassen zum laufen zu kriegen, allerdings ist mir nicht geläufig was ich wohin schreiben muss :(:(

Ich habe mal spasseshalber den Code nach Modul 1 verschoben.
Die Zeit läuft ab wie vorher auch und schliesst die Datei, allerdings funktioeren nun meine anderen Sub's nicht mehr, sie werden nicht mehr angesprochen.
Wechsel ich in den VBA Editor und starte alles mit F5 in der ersten Zeille funktionieren allerdings auch meine anderen Sub's wieder

schönen Abend
Titel: Antw: Sub in "Diese Arbeitsmappe" aus "Modul1 aufrufen
Beitrag von: Herberthe am Januar 24, 2016, 22:11:44 Nachmittag
Hallo Herbert G.
Ich glaube jetzt funktionierst  :) :) :) :) :)
Nach einigem Hin- und Hergeschiebe müsste es jetzt klappen.

Deine Aussage :"zuerst solltest du keine normalen Makros (Sub ...) in "DieseArbeitsmappe" haben. Diese gehören AUSSCHLIESSLICH in "StandardModul"e"
hat mich dazu bewogen mal einiges zu probieren bis es augenscheinlich klappt!
Ich versuche das mal mit meinen Worten zu definieren:
Sub's denen ich einen Namen gebe gehören in "Modul(x)"
Sub's deren Namen von VBA vorgegeben sind (z.B.: Workbook_BeforeSave,   Workbook_AfterSave,   Workbook_BeforeClose,   Workbook_BeforePrint....(die habe ich nämlich verwendet)) gehören in "DieseArbeitsmappe".
Ist das so verständlich und korrekt ?
Zumindest scheint es so zu funktionieren, aber da fehlt mir das Basiswissen zu.
Ich sage nochmal !Danke! , mit dem Tipp bin ich weitergekommen.

Bis demnächst  :)

Herbert

Titel: Antw: Sub in "Diese Arbeitsmappe" aus "Modul1 aufrufen
Beitrag von: Herbert Grom am Januar 25, 2016, 09:22:55 Vormittag
Hallo Herbert,

eine kleine Einführungsrunde in VBA:

"DieseArbeitsmappe": Zuerst klickst du im "Projekt-Explorer" links auf "DieseArbeitsmappe" etc. Anschließend musst Du in dem oberen, linken

Dropdownfeld "Workbook" auswählen. Danach stehen dir im rechten oberen Dropdown-Feld die möglichen Routinen zur Verfügung.

"Classmodule": Zuerst klickst du im "Projekt-Explorer" links auf "Tabelle1" etc. Anschließend musst Du in dem oberen, linken Dropdownfeld

"Worksheet" auswählen. Danach stehen dir im rechten oberen Dropdown-Feld die möglichen Routinen zur Verfügung.

Mit dem Schieberegler rechts kannst du jeweils sehen, welche möglichen Routinen vorhanden sind.

Und da ja bekanntlich ein Bild mehr sagt als 1000 Worte, hier noch ein selbiges:


Noch Fragen? ;o)=)

P.S.: Wenn du dich etwas mehr mit VBA auseinandersetzen willst, dann empfehle ich dir die Seiten von Peter Haserodt: http://www.online- (http://www.online-)

excel.de
Titel: Antw: Sub in "Diese Arbeitsmappe" aus "Modul1 aufrufen
Beitrag von: Herberthe am Januar 25, 2016, 19:37:00 Nachmittag
Hallo Herbert G.

Danke für die ausführliche Antwort.

Werde ich mir dann mal zu Gemüte führen