nur_mit_aktivem_makro Blätter ersichtlich - @Hajo
12.01.2008 18:17:23
Andre´
folgendes Makro von Dir läuft wunderbar
Option Explicit
Dim InI As Integer ' Zählvariable für Register
Dim ByS As Boolean ' Variable für Speicherung
'**************************************************
'* H. Ziplies *
'* 13.01.03, 18.10.03, 23.04.05 *
'* erstellt von Hajo.Ziplies@web.de *
'* http://home.media-n.de/ziplies/ *
'* *
'**************************************************
Private Sub Workbook_BeforeClose(Cancel As Boolean)
' ausblenden aller Register außer Tabelle1 mit
' Sheets("....").Visible = xlVeryHidden aus
' dies hat den Vorteil Sie können nur per VBA eingeblendet werden.
Dim Mldg As Byte ' Variable für Schalter MsgBox
' ActiveWorkbook.Unprotect ("Passwort") ' falls Dateischutz
If ActiveWorkbook.Saved Then
' Datei wurde nicht verändert
' eine Tabelle muß min. eingeblendet sein
Sheets("Tabelle1").Visible = True
' alle Tabellen ausblenden vom letzten bis zum ersten
' außer "Tabelle1"
For InI = Sheets.Count To 1 Step -1
If Sheets(InI).Name "Tabelle1" Then Sheets(InI).Visible = xlVeryHidden
Next InI
ByS = True
ThisWorkbook.Close True
Else
If ByS = True Then Exit Sub
Mldg = MsgBox(" Sollen die Veränderungen gespeichert werden ?", _
vbYesNo + vbQuestion, "Speicher abfrage ?", "", 0)
If Mldg = 6 Then ' es wurde "Ja" gedrückt
' aktualisierung Bildschirm aus
Application.ScreenUpdating = False
' eine Tabelle muß min. eingeblendet sein
Sheets("Tabelle1").Visible = True
' alle Tabellen ausblenden vom letzten bis zum ersten
' außer "Tabelle1"
For InI = Sheets.Count To 1 Step -1
If Sheets(InI).Name "Tabelle1" Then Sheets(InI).Visible = xlVeryHidden
Next InI
' aktualisierung Bildschirm ein
Application.ScreenUpdating = True
' Speichervariable auf True, da Ereignis Workbook_BeforeSave
' augeführt wird
ByS = True
ThisWorkbook.Save
Else
ByS = True
ThisWorkbook.Close False
End If
End If
' ActiveWorkbook.Protect ("Passwort") ' Dateischutz wieder setzen
End Sub
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
' Dieses Ereignis wird auch angesprungen falls in Workbook_BeforeClose die
' Speicherabfrage mit Ja beantwortet wird
' Das speichern muß abgefangen werden damit die Datei nicht mit eingeblendeten Tabellen
' gespeichert wird.
If ByS = False Then
' das Sicherungsereignis abbrechen, keine Speicherung
Cancel = True
' Hinweis
MsgBox "Datei kann nur beim schließen gespeichert werden"
End If
End Sub
Private Sub Workbook_Open()
' ActiveWorkbook.Unprotect ("Passwort")
' aktualisierung Bildschirm aus
Application.ScreenUpdating = False
' alle Tabellen einblenden vom letzten bis zum ersten
For InI = Sheets.Count To 1 Step -1
Sheets(InI).Visible = True
Next InI
' Tabelle mit Hinweis ausblenden
Sheets("Tabelle1").Visible = False
' Schalter Veränderung der Datei zurückstellen
' Damit das einblenden der Register nicht als Veränderung der Datei angesehen wird
ActiveWorkbook.Saved = True
' aktualisierung Bildschirm ein
Application.ScreenUpdating = True
' ActiveWorkbook.Protect ("Passwort")
End Sub
' Füge ein neues Register ein und schreibe groß drauf "Makro wurden nicht aktiviert"
' in
Private Sub Workbook_BeforeClose(Cancel As Boolean)
' blendest Du alle anderen Register aus
' Das Ausblenden hat den Vorteil das die Register nur über VBA eingeblendet werden können
' und nicht über Format, Blatt, Einblenden.
' VBA Projekt schützen
Problem ist nur wenn noch eine weitere Exceldatei geöffnet sind und beim beenden der _
Speichervorgang mit nein geklickt wird, dass dann folgende Meldung kommt.
Hast Du dafür eine Lösung
MFG Andre