Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Zeilen- & Spaltenbeschriftung per VBa ausblenden
#1
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.
Antworten Top
#2
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
Antworten Top
#3
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.
Antworten Top
#4
Hallo,

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

Gruß Werner
Antworten Top
#5
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.
Schöne Grüße
Berni
Antworten Top
#6
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
Antworten Top
#7
Hallo,

nicht nachvollziehbar.

Lad bitte deine Datei hier hoch.

Gruß Werner
Antworten Top
#8
Hi,

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


Angehängte Dateien
.xlsm   Test.xlsm (Größe: 42,06 KB / Downloads: 6)
Antworten Top
#9
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
[-] Folgende(r) 1 Nutzer sagt Danke an Werner.M für diesen Beitrag:
  • brooker
Antworten Top
#10
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


Angehängte Dateien
.xlsm   Test.xlsm (Größe: 42,55 KB / Downloads: 3)
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste