Clever-Excel-Forum

Normale Version: Zeilen- & Spaltenbeschriftung per VBa ausblenden
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
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
   
   End If

End Function

Mache ich einen Denkfehler?!

Danke schon einmal für eure Hilfe.
Hallo,

so:

Code:
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

End Sub

Private Sub Workbook_Open()
Dim ws As Worksheet

Application.ScreenUpdating = False

For Each ws In ThisWorkbook.Worksheets
   ws.Activate
   ActiveWindow.DisplayHeadings = Environ("Username") = "U12345"
Next ws
   
Worksheets("Tabelle1").Activate

End Sub


Gruß Werner
Hallo Werner,

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.
Hallo,

ohne deine Datei zu kennen kann ich da nicht viel dazu sagen.
Hast du ausgeblendete Blätter in der Datei?

Gruß Werner
Zitat:Habe den gesamten Code so in die Tabelle übernommen und den Namen für das Worksheet entsprechend angepasst.
Welchen Namen? In Werners Code kommt doch gar kein Blattname vor.
Hallo,

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

End Sub
Hallo,

nicht nachvollziehbar.

Lad bitte deine Datei hier hoch.

Gruß Werner
Hi,

anbei die Datei. Habe es immer noch nicht gefunden. Also den Fehler.
Hallo,

was willst du denn mit dem Modul und mit der Funktion? Lösch mal das komplette Modul.

Nur diesen Code ins Codemodul von "DieseArbeitsmappe"

Code:
Private Sub Workbook_Open()
Dim ws As Worksheet

Application.ScreenUpdating = False

For Each ws In ThisWorkbook.Worksheets
  ws.Activate
  ActiveWindow.DisplayHeadings = Environ("Username") = "U12345"
Next ws
 
Worksheets("Test").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

End Sub


Gruß Werner
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
Seiten: 1 2