09.10.2019, 14:50 (Dieser Beitrag wurde zuletzt bearbeitet: 09.10.2019, 14:50 von brooker.)
Hallo zusammen,
ich möchte die Zeilen- & Spaltenbeschriftung ausblenden, es sei denn, ein bestimmter Benutzer meldet sich an. Aktuell hat die Excel nur ein Tabellenblatt. Das kann zukünftig aber mehr werden.
Aktuell bekomme ich folgenden Fehler beim Öffnen:
Code:
Laufzeitfehler '91':
Objektvariable oder With-Blockvariable nicht festgelegt
Hier einmal mein gesamter Code:
Arbeitsmappe
Code:
Private Sub Workbook_Open()
Dim Username As String
Username = Environ("USERNAME")
Select Case Username
Case "U12345": Erg = Header(True) '--> Name des Users Case Else: Erg = Header(False)
End Select
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
ActiveWindow.DisplayHeadings = False
End Sub
Modul
Code:
Function Header(status)
If status = True Then
ActiveWindow.DisplayHeadings = True '<--------------------- Wird mir beim Öffnen/Debuggen markiert
danke für die schnelle Rückmeldung. Interessanter Ansatz. Habe den gesamten Code so in die Tabelle übernommen und den Namen für das Worksheet entsprechend angepasst. Bekomme nun beim Öffnen der Datei folgende Meldung:
"Die Methode 'Activate' für das Objekt '_Worksheet' ist fehlgeschlagen.
in der Datei gibt es aktuell nur ein Tabellenblatt. Es sind zwar einige Spalten ausgeblendet, aber sonst gibt es dort keine Besonderheiten.
Ich dachte erst, das hier der Blatt-Name mit gemeint ist. Den hatte ich geändert.
Code:
Next ws
Worksheets("Tabelle1").Activate
End Sub
Hatte es aber wieder Rückgängig gemacht. Habe hier im Code mal die Zeile markiert, die mir beim Debuggen gelb markiert wird.
Code:
Private Sub Workbook_Open() Dim ws As Worksheet
Application.ScreenUpdating = False
For Each ws In ThisWorkbook.Worksheets ws.Activate <-----------------------------------------------Wird mir als Fehler angezeigt ActiveWindow.DisplayHeadings = Environ("Username") = "U12345" Next ws
Worksheets("Tabelle1").Activate
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean) Dim ws As Worksheet
Application.ScreenUpdating = False
For Each ws In ThisWorkbook.Worksheets ws.Activate ActiveWindow.DisplayHeadings = True Next ws
11.10.2019, 16:06 (Dieser Beitrag wurde zuletzt bearbeitet: 11.10.2019, 16:07 von brooker.)
Hi,
die Funktion war ein Versuch. Wird aber durch den Code ja nicht angesprochen. Oder macht er das trotzdem?!
Ich habe nun noch einmal alles neu gemacht.
Wenn ich die Datei nun lokal öffne, funktioniert sie. Wenn ich sie von einem Netzlaufwerk (SharePoint) öffne, wird mir wieder die Zeile
For Each ws In ThisWorkbook.Worksheets
ws.Activate ActiveWindow.DisplayHeadings = Environ("Username") = "tester" Next ws
angemarkert inkl. Fehlermeldung " Die Methode 'Activate' für das Objekt '_Worksheet ist fehlgeschlagen. Andere Excel mit Marko laufen dem SharePoint problemlos