Anhang zu "Private Sub"
31.01.2005 14:53:21
Teddy
Hier einige Erläuterungen zur ersten Anfrage bzgl. PrivateSub...
Diese Arbeitsmappe-Code:
Private Sub Workbook_Open()
Set AppObject.ap = Application
End Sub
Modul1-Code:
Public AppObject As New clsevents
Klassenmodul "Clsevents" - Code:
Public WithEvents ap As Application
Private Sub ap_WorkbookOpen(ByVal Wb As Workbook)
Application.EnableCancelKey = xlDisabled
Application.ScreenUpdating = False
Workbooks.Open FileName:="D:\Eigene Dateien\1\1.xls", Password:=""
Workbooks("1.xls").Activate
If Workbooks("1.xls").ActiveSheet.Name = "Ende" Then GoTo Normal Else GoTo Wiederherstellung:
Normal:
ActiveWorkbook.Unprotect Password:=""
Sheets("Ende").Visible = False
Sheets("Eingabe").Visible = True
ActiveWorkbook.Protect Password:="", Structure:=True, Windows:=True
GoTo Ende:
Wiederherstellung:
ActiveWorkbook.Unprotect Password:=""
ActiveWorkbook.Protect Password:="", Structure:=True, Windows:=True
GoTo Ende:
Ende:
Application.ScreenUpdating = True
ThisWorkbook.Close
End Sub
So...
Das Ding macht folgendes. Es öffnet eine Mappe, schaut ob das Blatt "Ende" aktiv ist (außer diesem ist noch ein zweites Blatt eingeblendet - Keine Sorge!) und wenn ja, macht es alles unter NORMAL.
Falls das Blatt "Ende" nicht aktiv ist, wird alles unter WIEDERHERSTELLUNG ausgeführt.
So weit, so gut. Klappt bis hierher wunderbar.
Was ich aber jetzt noch einfügen möchte, ist das hier (Alles zwischen den beiden Ausrufezeichen):
Wiederherstellung:
ActiveWorkbook.Unprotect Password:=""
ActiveWorkbook.Protect Password:="", Structure:=True, Windows:=True
! Workbooks.Open FileName:="D:\Eigene Dateien\1\2.xls", Password:=""
Workbooks("2.xls").Activate
ActiveWorkbook.Unprotect Password:=""
ActiveWorkbook.Protect Password:="", Structure:=True, Windows:=True
Workbooks("1.xls").Activate !
GoTo Ende:
Aber das klappt leider nicht. Ich bekomme dann immer wieder den Fehler "Index ausserhalb des gültigen Breichs".
Kann mir da einer helfen? Ich mache damit jetzt schon `ne ganze Zeit lang rum - Ohne Ergebnis.
Muß ich eine weitere PrivateSub deklarieren, welche dann aus der ersten heraus aufgerufen wird? Oder was muß ich tun? Habe es auch schon mit `ner ganz normalen SUB-Routine versucht. Scheitert aber auch.
Ach Ja - Wundert euch bitte nicht über die vielen Protect & Unprotect & Password Stellen. Die sind genauso gewollt und beabsichtigt. Habe nur die Passwörter rausgenommen.
Schon mal vielen lieben Dank im Voraus (Falls mir jemand hilft).
Schönen Tag noch...
Teddy