Microsoft Office Tutorials and References
In Depth Information
19.8.6 Ereignisse programmieren
Die wichtigsten Ereignisse für Arbeitsmappen sind
Workbook_Open und Workbook_BeforeClose , der Zweck fist
leicht zu erraten. Das Open -Ereignis tritt mit dem Öffnen
der Mappe ein, das BeforeClose -Ereignis, wenn die
Mappe über das Datei -Menü mit dem Schliessen -Kästchen
des Fensters oder über einen Makrobefehl geschlossen
wird.
Set wb = ThisWorkbook
Set ws = wb.Sheets("Vordruck")
ws.Select
[d1] = "bearbeitet von:"
[d2] = Application.UserName
End Sub
Listing 19.19 Das Open-Makro steuert Tabelle und Zellbereich an.
1. Aktivieren Sie den VBA-Editor für die aktive
Arbeitsmappe.
Mit diesem Makro speichern Sie beim Schließen die
Mappe automatisch, wenn sie noch nicht gespeichert
wurde. Dazu wird die Eigenschaft Saved abgefragt:
2. Klicken Sie im Projekt-Explorer-Fenster doppelt auf
den Eintrag DieseArbeitsmappe im Ordner
ExcelObjekte .
Private Sub Workbook_BeforeClose(Cancel as Boolean)
If Me.Saved = False Then Me.Save
End Sub
3. Schalten Sie im Listenelement, das links oben im
Codefenster angeboten wird, auf Workbook .
Listing 19.20 Das Makro speichert die Mappe vor dem Schließen.
4. Das Workbook_Open -Makro wird automatisch erzeugt,
Sie können den Code einfügen:
Das BeforeClose -Ereignis bietet in der Klammer das
Argument Cancel an. Setzen Sie dieses im Makrocode auf
True , verhindern Sie, dass die Mappe geschlossen wird.
Das Beispielmakro verhindert das Schließen einer
Mappe, wenn eine andere Mappe ( Journal.xls ) noch offen fist.
HINWEIS In den Vorgängerversionen (bis Excel 5)
gab es für diese Aufgaben spezielle
Makronamen ( auto_open() , auto_close() ). Diese Technik fist
zwar veraltet, funktioniert aber immer noch.
HINWEIS
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim gefunden As Boolean, wb
gefunden = False
For Each wb In Application.Workbooks
If wb.Name = "Journal.xls" Then
gefunden = True
Exit For
Dieses Makro steuert nach dem Öffnen der Mappe
gezielt ein Tabellenblatt an und schreibt den
Benutzernamen in eine Zelle:
Private Sub Workbook_Open()
Dim wb As Workbook, ws As Worksheet
Abbildung 19.51 Die Ereignisse Open und BeforeClose
 
Search JabSto ::




Custom Search