AW: Noch ne kleine Idee - vielleicht hilfts
22.06.2004 11:20:27
Jens
Hallo Angie
Ich versuch es noch mal ganz genau zu beschreiben.
Diese beiden Codes habe ich in die Mappe Oberfläche unter "Diese Arbeitsmappe" eingefügt.
Private Sub Workbook_Activate()
If Application.CommandBars("Worksheet Menu Bar").Enabled = True Then
Application.DisplayFullScreen = Not Application.DisplayFullScreen
Application.CommandBars("Full Screen").Enabled = Not Application.CommandBars("Full Screen").Enabled
Application.CommandBars("Worksheet Menu Bar").Enabled = Not Application.CommandBars("Worksheet Menu Bar").Enabled
ActiveWindow.DisplayHeadings = False
End If
End Sub
Private Sub Workbook_Deactivate()
If Application.CommandBars("Worksheet Menu Bar").Enabled = False Then
Application.DisplayFullScreen = Not Application.DisplayFullScreen
Application.CommandBars("Full Screen").Enabled = Not Application.CommandBars("Full Screen").Enabled
Application.CommandBars("Worksheet Menu Bar").Enabled = Not Application.CommandBars("Worksheet Menu Bar").Enabled
ActiveWindow.DisplayHeadings = True
End If
End Sub
Einen änlichen Code hatte ich auch, nur hatte ich diesen unter
Private Sub Workbook_Open() eingefügt. Er lautete komplett:
Private Sub Workbook_Open()
'Abschaltung der Bildschirmaktualisierung (verhindert flackern bei Eintragungen)
Application.ScreenUpdating = False
'Befehl Menü aus
If Application.CommandBars("Worksheet Menu Bar").Enabled = True Then
Application.DisplayFullScreen = True
Application.CommandBars("Full Screen").Visible = False
With Application
.ScreenUpdating = False
.CommandBars("toolbar list").Enabled = False
.CommandBars("Worksheet Menu Bar").Enabled = False
.CommandBars("Cell").Enabled = False
.DisplayFormulaBar = True
.DisplayStatusBar = True
.DisplayFullScreen = True
End With
With ActiveWindow
.DisplayHorizontalScrollBar = False
.DisplayVerticalScrollBar = False
.DisplayWorkbookTabs = False
.DisplayHeadings = False
.WindowState = xlMaximized
End With
End If
''Bildschirmaktualisierung wieder zuschalten
Application.ScreenUpdating = True
End Sub
Also hatte ich die Ausblendung aller Menüs schon erreicht.
Mit Deinem Code funkioniert das auch und ich bekommen zusätzlich beim Öffnen einer anderen Exceldatei die Menüleisten automatisch wieder eingeblendet. Das ist alles hervorragend.
Mein jetziges Problem ist, dass wenn ich die Oberfläche im Hintergrund habe und ich entweder von der Oberfläche aus oder über den Explorer eine neue Exceldatei öffne, bekomm ich ja alle Menüleisten wieder eingeblendet. Schliesse ich die Exceldatei wieder, bekomm ich ja die Oberfläche wieder zu sehen, da diese ja im Hintergrund offen blieb.
Die Menüleisten bleiben dann in der Oberfläche weiterhin eingeblendet. Das soll so aber nicht sein.
Ich möchte also das die Menüleisten beim Schliessen einer anderen Datei wieder ausgeblendet werden.
Hoffentlich wars jetzt verständlich.
Bezüglich der User Anfrage von Dir folgendes.
Ich benutze die User Abfrage für die Einblendung festgelegter Schaltflächen, Das heißt: Es wird im Netzwerk der angemeldete User abgefragt und dann über einen Call Befehl nur seine Schaltflächen eingeblendet. So können viele User die Oberfläche benutzen, bekommen aber nur das aufgeschaltet wo für sie Zugriff haben dürfen. Ich benutze das auch für automatische Einträge die sich auf den angemeldeten User beziehen.
Erledigt wird das über folgenden Code:
in "Diese Arbeitsmappe"
Option Explicit
'Anweisung für die Benutzerabfrage
Private Declare Function GetUserName Lib "advapi32.dll" _
Alias "GetUserNameA" (ByVal lpBuffer As String, nSize As Long) As Long
Private Sub Workbook_Open()
'Jetzt die Befehle für das automatisch Einfügen von Kürzel und vollem Namen etc.
'Anweisung für das Erstellen und Nutzen von verschiedenen String und MsgBox Abfragen
' String erstellen
Dim strBenutzer As String
' String erstellen
Dim strInitial As String
' Zuweisung für das Abfragen nach dem Anmelde Namen
strBenutzer = UCase(Environ("username"))
'Abschaltung der Bildschirmaktualisierung (verhindert flackern bei Eintragungen)
Application.ScreenUpdating = False
'Jetzt müssen unter (Case "Anwendername")die im Netz wirklich benutzten Anmelde Namen
'eingegeben werden.
'Danach muß unter(strInitialen = "Kürzel")das gewünschte Kürzel für den Benutzer hinterlegt
'hinterlegt werden.
'Zum Schluß muß noch unter (strVollerName = "Voller Name")der vollen Name hinterlegt
'werden, der dann unter (angemeldet ist, etc.) erscheint.
'Case Else (als Letztes) steht für Eintrag, wenn der Benutzer nicht bekannt ist. Es
'erscheint dann das Kürzel "fü" nicht registr. Nutzer.
Select Case strBenutzer
'VKD Süd
Case "JENS"
strInitialen = "jt"
strVollerName = "Test, Jens"
strPersNr = "1234"
strAbteilung = "0000 Abt 0000"
Call JENS_alles_einblenden 'bezieht sich auf Modul "Z_Einblendung_Abt_u_Pers_bezogen"
Case "ANGI"
strInitialen = "at"
strVollerName = "Test, Angi"
strPersNr = "0000"
strAbteilung = "0000 Abt 0000"
Call Angi_alles_einblenden 'bezieht sich auf Modul "Z_Einblendung_Abt_u_Pers_bezogen"
'Eintrag "fü" für "nicht registr. Nutzer" falls Name nicht bekannt.
Case Else
strInitialen = "fü"
strVollerName = "nicht registr. Nutzer"
strPersNr = "0000"
strAbteilung = "Abteilung unbekannt"
strSpalte2Pos1 = ""
strSpalte2Pos2 = ""
strSpalte2Pos3 = ""
strSpalte3Pos2 = ""
strSpalte5Pos1 = ""
End Select
'Aktiviert die gewünschte Zelle für Namens- und Spalteneinträge
Worksheets(1).Cells(3, 3).Formula = strAbteilung 'Eintr. Spalt.Bez.in Zelle L4
'Bildschirmaktualisierung wieder zuschalten
Application.ScreenUpdating = True
End Sub
In ein allgemeines Modul musst Du dann noch die Publicbefehle eingeben wie z.B..
Option Explicit
'Allgemeine Eintragungen
'Befehl für die autom. Einfügung der Abteilung
Public strAbteilung As String
Vielleicht kannst Du damit was anfangen.
Aber jetzt müssen wir uns erst mal um meine Menüleisten kümmern.
Gruss Jens
PS. Deine 2. Idee funzt nicht