Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Spalten entsprechend Benutzer ein-/ausblenden

Spalten entsprechend Benutzer ein-/ausblenden
20.06.2007 11:43:25
Marcel1978
Hallo,
war im Urlaub, deshalb erst jetzt Danke an Rudi für die Antwort.
Folgendes habe ich in VB-Editor übertragen:

Private Sub Workbook_Open()
With Sheets(1)
.Columns.Hidden = True  'alles ausblenden
Select Case LCase(Environ("Username"))
Case "Unger": .Range("B:B,E:F,H:H").Hidden = False
Case "Werner": .Range("A:Z").Hidden = False
Case "meier": Range("A:A,D:D,J:L").Hidden = False
End Select
End With
End Sub


Die Benutzernamen entsprechen dem "Autor" aus der "Dateiinfo" in den Eigenschaften von Excel-Dateien,
die an den entsprechenden Rechnern erstellt wurden. (Gros/Kleinschreibung beachtet!)
Das Problem ist nun, dass bei den definierten Benutzern trotzdem alle Spalten ausgeblendet sind.
Was ist am Makro noch nicht richtig bzw. wo bekomme ich den richtigen Benutzernamen her?
Danke nochmal.
Marcel

Anzeige

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Spalten entsprechend Benutzer ein-/ausblenden
20.06.2007 11:53:00
Rudi
Hallo,
1. LCase wandelt in Kleinbuchstaben um, des halb muss du die Namen klein schreiben.
2. Environ("Username") ist der Netzwerkname des Benutzers, der kann vom Autor abweichen.
Der Autor ist wie unter Extras-Optionen-allgemein und kann jederzeit geändert werden.

Private Sub Workbook_Open()
With Sheets(1)
.Columns.Hidden = True  'alles ausblenden
Select Case LCase(Environ("Username"))
Case "unger": .Range("B:B,E:F,H:H").Hidden = False
Case "werner": .Range("A:Z").Hidden = False
Case "meier": Range("A:A,D:D,J:L").Hidden = False
End Select
End With
End Sub


Gruß
Rudi
Eine Kuh macht Muh, viele Kühe machen Mühe

Anzeige
AW: Spalten entsprechend Benutzer ein-/ausblenden
20.06.2007 12:04:37
Marcel1978
Hallo Rudi,
wenn ich "werner" klein schreibe, kommt ein Laufzeitfehler '1004' (Die Hidden-Eigenschaft des Range-Objekts kann nicht festgelegt werden)
Bei Klick auf "Debuggen" ist bei: Case "werner": .Range("A:H").Hidden = False
ab dem Doppelpunkt alles gelb hinterlegt.
Mein Netzwerkname ist "Werner"
Wat nun ?

Anzeige
AW: Spalten entsprechend Benutzer ein-/ausblenden
20.06.2007 12:27:49
Rudi
Hallo,
kleiner Fehler:
.Range("A:H").Entirecolumn.Hidden = False
Gruß
Rudi
Eine Kuh macht Muh, viele Kühe machen Mühe

AW: Spalten entsprechend Benutzer ein-/ausblenden
20.06.2007 12:39:00
Marcel1978
Hab jetzt folgendes drin:

Private Sub Workbook_Open()
With Sheets(1)
.Columns.Hidden = True  'alles ausblenden
Select Case LCase(Environ("Username"))
Case "unger": .Range("B:B,E:F,H:H").EntireColumn.Hidden = False
Case "werner": .Range("A:H").EntireColumn.Hidden = False
Case "meier": Range("A:A,D:D,J:L").EntireColumn.Hidden = False
End Select
End With
End Sub


Laufzeitfehler kommt nicht mehr, aber zeigt immer noch keine Spalten an!

Anzeige
AW: Spalten entsprechend Benutzer ein-/ausblenden
20.06.2007 12:46:17
Rudi
Hallo,
da
Case "meier": Range("A:A,D:D,J:L").EntireColumn.Hidden = False
fehlt der . vor Range
Geh den Code mal mit F8 durch.
Gruß
Rudi
Eine Kuh macht Muh, viele Kühe machen Mühe

AW: Spalten entsprechend Benutzer ein-/ausblenden
20.06.2007 13:14:59
Marcel1978

Private Sub Workbook_Open()
With Sheets(1)
.Columns.Hidden = True  'alles ausblenden
Select Case LCase(Environ("Username"))
Case "unger": .Range("B:B,E:F,H:H").EntireColumn.Hidden = False
Case "werner": .Range("A:H").EntireColumn.Hidden = False
Case "meier": .Range("A:A,D:D,J:L").EntireColumn.Hidden = False
End Select
End With
End Sub


Also,
mit F8 wird jede Zeile gelb hinterlegt.
Nach case wird nur das gelb hinterlegt was mit dem Benutzer übereinstimmt,
d.h. am Rechner Werner wird nur .Range.... bei Case "werner" gelb.
Danach dann "End Select" usw. (Case "meier" wird dann übersprungen)
Funktioniert auch an den anderen Rechnern.
D.h. Benutzernamen funktionieren, aber die Funktion dahinter mit dem Spaltenausblenden hat noch einen Haken.
Ich weiß, ich bin schon bei der Mehrzahl der Wiederkäuer,
deshalb nochmal tausend Dank für die Mühe ;-) .

Anzeige
AW: Spalten entsprechend Benutzer ein-/ausblenden
20.06.2007 13:43:00
Marcel1978
"Frage noch offen" vergessen, sorry

AW: Spalten entsprechend Benutzer ein-/ausblenden
20.06.2007 14:20:24
Rudi
Hallo,

mit F8 wird jede Zeile gelb hinterlegt


das ist richtig so.


aber die Funktion dahinter mit dem Spaltenausblenden 


Es werden Spalten eingeblendet!
Gruß
Rudi
Eine Kuh macht Muh, viele Kühe machen Mühe

Anzeige
AW: Spalten entsprechend Benutzer ein-/ausblenden
20.06.2007 15:50:00
Marcel1978

Es werden Spalten eingeblendet!


Tschuldigung,
es ist richtig, dass die Spalten eingeblendet werden sollen.
Aber es wird keine Spalte eingeblendet.
Es ist keine Spalte zu sehen !
Irgendwas stimmt an der Funktion nicht.
Oder an meiner Datei ?
Danke nochmals.

Anzeige
AW: Spalten entsprechend Benutzer ein-/ausblenden
21.06.2007 08:57:00
Marcel1978
So, mein Fehler.
Die Funktion funktioniert, aber die Spalten werden erst eingeblendet, wenn man
z.B. mit den Pfeil-Tasten mal nach links oder rechts geht.
Gibts dazu noch einen Code, damit sofort wenn die Datei geöffnet wird,
die entsprechenden Spalten angezeigt werden ?
Danke nochmals, wie gesagt, keine VBA-Kenntnisse.

Anzeige
AW: Spalten entsprechend Benutzer ein-/ausblenden
21.06.2007 14:26:08
Rudi
Hallo,
im Projektexplorer(das linke Fenster) in deinem Projekt auf Microsoft excel Objekte klicken, dann auf DieseArbeitsmappe doppelklicken und den Code in das rechte Fenster einfügen.

Private Sub Workbook_Open()
With Sheets(1)
.Columns.Hidden = True  'alles ausblenden
Select Case LCase(Environ("Username"))
Case "unger"
.Range("B:B,E:F,H:H").EntireColumn.Hidden = False
Application.Goto Range("B1"), True
Case "werner"
.Range("A:H").EntireColumn.Hidden = False
Application.Goto Range("A1"), True
Case "meier"
.Range("A:A,D:D,J:L").EntireColumn.Hidden = False
Application.Goto Range("A1"), True
End Select
End With
End Sub

Gruß
Rudi
Eine Kuh macht Muh, viele Kühe machen Mühe

Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Spalten entsprechend Benutzer ein-/ausblenden


Schritt-für-Schritt-Anleitung

Um in Excel nicht benötigte Spalten auszublenden und diese entsprechend dem Benutzer ein- oder auszublenden, befolge diese Schritte:

  1. Öffne den VBA-Editor:

    • Drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Füge den Code in das richtige Modul ein:

    • Im Projektexplorer klickst du auf "Microsoft Excel Objekte" und doppelklickst auf "DieseArbeitsmappe".
  3. Gib den folgenden Code ein:

    Private Sub Workbook_Open()
       With Sheets(1)
           .Columns.Hidden = True  ' alles ausblenden
           Select Case LCase(Environ("Username"))
           Case "unger": .Range("B:B,E:F,H:H").EntireColumn.Hidden = False
           Case "werner": .Range("A:H").EntireColumn.Hidden = False
           Case "meier": .Range("A:A,D:D,J:L").EntireColumn.Hidden = False
           End Select
           Application.Goto Range("A1"), True  ' Zum Anfang der Tabelle springen
       End With
    End Sub
  4. Speichere die Datei als Makro-aktivierte Arbeitsmappe (.xlsm), um die Funktionalität zu erhalten.

  5. Schließe den VBA-Editor und teste die Datei, indem du sie öffnest.


Häufige Fehler und Lösungen

  • Fehler: Laufzeitfehler '1004':

    • Dies kann passieren, wenn die Range nicht korrekt angegeben ist. Stelle sicher, dass die Spaltenbezeichnung korrekt ist und der Punkt (.) vor Range nicht fehlt.
  • Problem: Spalten werden nicht sofort angezeigt:

    • Wenn die Spalten erst nach einem Klick sichtbar werden, füge Application.Goto Range("A1"), True nach dem Einblenden der Spalten hinzu, um sicherzustellen, dass der Fokus auf die Zelle gesetzt wird.

Alternative Methoden

Wenn du Excel ungenutzte Bereiche ausblenden möchtest, kannst du dies auch manuell tun:

  1. Rechtsklick auf die Spaltenüberschrift der Spalte, die du ausblenden möchtest.
  2. Wähle "Ausblenden" aus dem Kontextmenü.

Für eine dynamische Lösung kannst du auch Formeln verwenden, um nicht genutzte Zellen zu identifizieren und diese dann über VBA auszublenden.


Praktische Beispiele

  1. Benutzer "werner" sieht alle Spalten von A bis H.
  2. Benutzer "Unger" sieht nur die Spalten B, E, F und H.
  3. Benutzer "meier" hat Zugriff auf die Spalten A, D und J bis L.

Diese Konfiguration stellt sicher, dass jeder Benutzer nur die relevanten Daten sieht und excel nicht genutzte spalten ausblenden kann.


Tipps für Profis

  • Verwende LCase, um sicherzustellen, dass die Benutzernamen unabhängig von der Groß- und Kleinschreibung korrekt zugeordnet werden.
  • Nutze Application.Goto, um die Sichtbarkeit der Spalten zu verbessern und den Fokus automatisch zu setzen, was die Benutzererfahrung erhöht.
  • Halte deine VBA-Codes sauber und kommentiere sie, um zukünftige Anpassungen zu erleichtern.

FAQ: Häufige Fragen

1. Wie kann ich alle unbenutzten Spalten auf einmal ausblenden? Um alle unbenutzten Spalten auszublenden, kannst du die .Columns.Hidden = True Methode verwenden, bevor du spezifische Spalten einblendest.

2. Funktioniert dieser Code in allen Excel-Versionen? Ja, der Code sollte in den meisten modernen Excel-Versionen (ab Excel 2007) funktionieren, solange VBA unterstützt wird.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige