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
-
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
-
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
-
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
-
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
-
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
-
Hallo Herbert G.
Danke für die ausführliche Antwort.
Werde ich mir dann mal zu Gemüte führen