Office: Tabellenblätter userabhängig und Datumsabhängig ausblenden

Helfe beim Thema Tabellenblätter userabhängig und Datumsabhängig ausblenden in Microsoft Excel Hilfe um das Problem gemeinsam zu lösen; Hallo, ich arbeite immer noch an der Optimierung meines Schichtplaners. Jetzt kommt das Thema Datenschutz zum zuge und normale Mitarbeiter dürfen... Dieses Thema im Forum "Microsoft Excel Hilfe" wurde erstellt von dienheimer, 2. Dezember 2013.

  1. dienheimer Erfahrener User

    Tabellenblätter userabhängig und Datumsabhängig ausblenden


    Hallo,

    ich arbeite immer noch an der Optimierung meines Schichtplaners.

    Jetzt kommt das Thema Datenschutz zum zuge und normale Mitarbeiter dürfen z.B. Krankheitstage
    eines anderen Mitarbeiters nicht in der Vergangenheit sehen.

    Ausgangssituation.

    Ich habe eine Tabellenblatt zur Eingabe für das Ganze Jahr und 12 Tabellenblätter für
    jeweils den Monat.

    Was hätte ich gerne:

    Bestimmte User (PC-Anmeldename) z.B.: schwarz01 dürfen alle Tabellenblätter sehen.
    Andere User dürfen nur bestimmte Tabellenblätter sehen.
    Alle anderen dürfen nur das Tabellenblatt den aktuellen monats und folgende sehen.
    z.B.: Ein Mitarbeiter öffnet am 28.Feb. die Exceldatei dann sieht er nur die Tabellenblätter Februar bis Dezember.
    Macht er einen Tag später am 01. März. die Datei auf dann sieht er nur die Tabellenblätter März bis Dezember.


    Es muß also irgendwie eine Userabfrage direkt beim Start erfolgen die das Datum beinhaltet.


    Kann mir da jemand helfen?

    Achso, excel 2010 Datei ist .xlsm

    Gruß Markus
     
    dienheimer, 2. Dezember 2013
    #1
  2. Beverly
    Beverly Erfahrener User
    Hi Markus,

    vom Prinzip her so:

    Code:
    Private Sub Workbook_Open()
       Dim wksTab As Worksheet
       Application.ScreenUpdating = False
       If Environ("Username") <> "Admin" Then
          ' erst mal alle ausblenden wenn nicht der Administrator
          For Each wksTab In Worksheets
             wksTab.Visible = False
          Next wksTab
       End If
       Select Case Environ("Username")
          Case "Admin"
             ' alle einblenden wenn Administrator
             For Each wksTab In Worksheets
                wksTab.Visible = True
             Next wksTab
          Case "Name 1"
             ' nur Tabelle2 einblenden
             Worksheets("Tabelle2").Visible = True
          Case "Name 2"
             ' nur Übersicht und Endabrechnung einblenden
             Worksheets("Übersicht").Visible = True
             Worksheets("Endabrechnung").Visible = True
       End Select
       Application.ScreenUpdating = True
    End Sub
    Bis später,
    Karin
     
    Beverly, 2. Dezember 2013
    #2
  3. dienheimer Erfahrener User
    Hallo Karin,

    erstmal vielen dank für den Vorschlag.


    Leider kommt bei mir immer Laufzeitfehler '1004'.


    Wenn ich das Skript im Einzelschritt durchlaufen lasse springt es immer zwischen den beiden Zeilen hin und her:

    wksTab.Visible = False
    Next wksTab

    und irgend wann kommt der Fehler.


    Ich habe für "Username" den Windows Anmeldename eingefügt.

    Was ist "Name 1" bzw "Name 2" ?

    Trage ich dort auch die Windows anmeldenamen der Teilberechtigten User ein?

    Und wie mache ich das mit allen anderen usern mit der Datumsabhängigen ansicht?


    Gruß Markus
     
    dienheimer, 3. Dezember 2013
    #3
  4. Beverly
    Beverly Erfahrener User

    Tabellenblätter userabhängig und Datumsabhängig ausblenden

    Hi Markus,

    mindestens 1 Tabellenblatt muss sichtbar bleiben - ändere diesen Teil:

    Code:
          ' erst mal alle ausblenden wenn nicht der Administrator
          For Each wksTab In Worksheets
            [COLOR=#ff0000] If wksTab.Name <> "Startblatt" Then[/COLOR] wksTab.Visible = False
          Next wksTab
    
    Name des Blattes, welches generell sichtbar bleiben soll, musst du anpassen.

    Zitat aus der VBA-Hilfe zu Environ("Username"):

    Verwendet werden folglich die Windows-Anmeldenamen, im Code "Admin", "Name 1", "Name 2" (die ich ja nicht kenne) - die musst du selbstverständlich anpassen.

    Was das datumsabhängige Einblenden betrifft - ich kenne deine Blattbezeichnungen nicht, deshalb kann ich nur allgemein antworten: laufe in einer Schleife über alle Tabellenblätter und prüfe, welche bei Month(Date) - also Monat des aktuellen Datums - sichtbar sein dürfen.

    Bis später,
    Karin
     
    Beverly, 3. Dezember 2013
    #4
  5. dienheimer Erfahrener User
    Hallo, habe ich geändert.

    jetzt meckert er an der gleichen stelle:

    Kompilierungsfehler Next ohne For


    ????
     
    dienheimer, 3. Dezember 2013
    #5
  6. Beverly
    Beverly Erfahrener User
    Also bei mir nicht und da ich deinen derzeitigen Code nicht sehe, kann ich leider nicht weiterhelfen.

    Bis später,
    Karin
     
    Beverly, 3. Dezember 2013
    #6
  7. dienheimer Erfahrener User
    Hi, hier der Code:

    Private Sub Workbook_Open()
    Dim wksTab As Worksheet
    Application.ScreenUpdating = False
    If Environ("Username") <> "Schwarz01" Then
    ' erst mal alle ausblenden wenn nicht der Administrator
    If wksTab.Name <> "Dezember" Then
    wksTab.Visible = False
    Next wksTab
    End If
    Select Case Environ("Username")
    Case "Schwarz01"
    ' alle einblenden wenn Administrator
    For Each wksTab In Worksheets
    wksTab.Visible = True
    Next wksTab
    Case "Freitag01"
    ' nur Tabelle2 einblenden
    Worksheets("Januar").Visible = True
    Case "Boss01"
    ' nur Übersicht und Endabrechnung einblenden
    Worksheets("Januar").Visible = True
    Worksheets("Februar").Visible = True
    End Select
    Application.ScreenUpdating = True

    End Sub



    Gruß Markus
     
    dienheimer, 4. Dezember 2013
    #7
  8. Beverly
    Beverly Erfahrener User

    Tabellenblätter userabhängig und Datumsabhängig ausblenden

    Hi Markus,

    wenn du den Code nicht richtig aus dem Beitrag übernimmst, musst du dich auch nicht wundern.

    Code:
    Private Sub Workbook_Open()
       Dim wksTab As Worksheet
       Application.ScreenUpdating = False
       If Environ("Username") <> "Schwarz01" Then
          ' erst mal alle ausblenden wenn nicht der Administrator
          For Each wksTab In Worksheets
             If wksTab.Name <> "Dezember" Then wksTab.Visible = False
          Next wksTab
       End If
       Select Case Environ("Username")
          Case "Schwarz01"
             ' alle einblenden wenn Administrator
             For Each wksTab In Worksheets
                wksTab.Visible = True
             Next wksTab
          Case "Freitag01"
             ' nur Tabelle2 einblenden
             Worksheets("Januar").Visible = True
          Case "Boss01"
             ' nur Übersicht und Endabrechnung einblenden
             Worksheets("Januar").Visible = True
             Worksheets("Februar").Visible = True
       End Select
       Application.ScreenUpdating = True
    End Sub
    Bis später,
    Karin
     
    Beverly, 4. Dezember 2013
    #8
  9. dienheimer Erfahrener User
    Hallo vielen Dank ich bin wohl blind.


    Jetzt habe ich den Code genau so ins Objekt "DieseArbeitsmappe" eingefügt.
    Problem: egal wer sich anmeldet, man sieht nur noch den Dezember. alles andere ist weg
    obwohl ich als admin ja eigentlich alles sehen sollte.


    ????
     
    dienheimer, 4. Dezember 2013
    #9
  10. Beverly
    Beverly Erfahrener User
    Dann stimmt der Name "Schwarz01" nicht.

    Bis später,
    Karin
     
  11. dienheimer Erfahrener User
    Hallo, ja wundert mich auch mit dem Username.

    Ich habe es jetzt so gemacht:

    Private Sub Workbook_Open()

    Dim BerechtigteAdminUser()
    BerechtigteAdminUser = Array("Schwarz01")

    If Not IsError(Application.Match(Environ("Username"), BerechtigteAdminUser, 0)) Then

    Worksheets("Zeitberechnung FSNFFFA").Visible = True
    Worksheets("Zeitberechnung UKTZ").Visible = True
    Worksheets("Zeitberechnung UH").Visible = True
    Worksheets("Berechnung Urlaub").Visible = True
    Worksheets("Drop Down Inhalte").Visible = True
    Worksheets("Sollberechnung").Visible = True
    Worksheets("Zeitvorgaben").Visible = True
    Worksheets("Eingabe").Visible = True
    Worksheets("Grundberechnung").Visible = True
    Worksheets("Januar").Visible = True
    Worksheets("Februar").Visible = True
    Worksheets("März").Visible = True
    Worksheets("April").Visible = True
    Worksheets("Mai").Visible = True
    Worksheets("Juni").Visible = True
    Worksheets("Juli").Visible = True
    Worksheets("August").Visible = True
    Worksheets("September").Visible = True
    Worksheets("Oktober").Visible = True
    Worksheets("November").Visible = True
    Worksheets("Dezember").Visible = True
    Exit Sub


    End If


    Dim BerechtigteUser()
    BerechtigteUser = Array("x", "x", "x")

    If Not IsError(Application.Match(Environ("Username"), BerechtigteUser, 0)) Then

    Worksheets("Zeitberechnung FSNFFFA").Visible = False
    Worksheets("Zeitberechnung UKTZ").Visible = False
    Worksheets("Zeitberechnung UH").Visible = False
    Worksheets("Berechnung Urlaub").Visible = False
    Worksheets("Drop Down Inhalte").Visible = False
    Worksheets("Sollberechnung").Visible = False
    Worksheets("Zeitvorgaben").Visible = True
    Worksheets("Eingabe").Visible = True
    Worksheets("Grundberechnung").Visible = True
    Worksheets("Januar").Visible = True
    Worksheets("Februar").Visible = True
    Worksheets("März").Visible = True
    Worksheets("April").Visible = True
    Worksheets("Mai").Visible = False
    Worksheets("Juni").Visible = True
    Worksheets("Juli").Visible = True
    Worksheets("August").Visible = True
    Worksheets("September").Visible = True
    Worksheets("Oktober").Visible = True
    Worksheets("November").Visible = True
    Worksheets("Dezember").Visible = True
    Exit Sub


    Else

    Worksheets("Zeitberechnung FSNFFFA").Visible = False
    Worksheets("Zeitberechnung UKTZ").Visible = False
    Worksheets("Zeitberechnung UH").Visible = False
    Worksheets("Berechnung Urlaub").Visible = False
    Worksheets("Drop Down Inhalte").Visible = False
    Worksheets("Sollberechnung").Visible = False
    Worksheets("Zeitvorgaben").Visible = False
    Worksheets("Eingabe").Visible = False
    Worksheets("Grundberechnung").Visible = False
    Worksheets("Januar").Visible = True
    Worksheets("Februar").Visible = True
    Worksheets("März").Visible = True
    Worksheets("April").Visible = True
    Worksheets("Mai").Visible = True
    Worksheets("Juni").Visible = True
    Worksheets("Juli").Visible = True
    Worksheets("August").Visible = True
    Worksheets("September").Visible = True
    Worksheets("Oktober").Visible = True
    Worksheets("November").Visible = True
    Worksheets("Dezember").Visible = True




    End If

    End Sub


    und so funktioniert es.



    Danke nochmal.




    Mit der Abfrage des Datums mache ich ein neues Thema auf.
     
    dienheimer, 5. Dezember 2013
    #11
  12. Tobias89 Neuer User
    Hallo miteinander,

    hab mir eure Beiträge angeschaut und ein ähnliches Problem.
    Ich habe eine Excel mit drei Tabellen (Tabelle1, Tabelle2 und Tabelle3).
    Der User "Lager" soll als einziger die Tabelle3 nicht sehen können (beim User handelt es sich um einen MS Zugang).
    Könnt ihr mir hier weiter helfen?

    Vorab Danke

    lg
     
    Tobias89, 23. Juni 2020
    #12
  13. Beverly
    Beverly Erfahrener User

    Tabellenblätter userabhängig und Datumsabhängig ausblenden

    Hi,

    versuche es so:

    Code:
    Private Sub Workbook_Open()
        If Environ("UserName") = "Lager" Then
            Worksheets("Tabelle3").Visible = xlVeryHidden
        Else
            Worksheets("Tabelle3").Visible = True
        End If
    End Sub
    
    

    Beachte aber, dass die Makros aktiviert werden müssen, sonst wird der Code nicht ausgeführt.

    Bis später,
    Karin
     
    Beverly, 23. Juni 2020
    #13
  14. Tobias89 Neuer User
    Hallo Karin,

    das hat prima geklappt!
    Jetzt hat sich die Sache aber nochmal etwas geändert...sorry,
    User "Lager" soll Tabelle 1 und 2 sehen können aber Tabelle 3 nicht - das wäre somit mit deinem Code erledigt.
    Aber jetzt gibt es noch einen 2. User ("Lager1") der wiederum nur Tabelle 3 sehen soll und 1 und 2 nicht.
    Bei laienhaften Versuch kam es zu einer Mehrdeutigkeit.

    Wäre dir echt dankbar, wenn du mir hier noch einmal helfen könntest.

    Vorab danke

    lg
     
    Tobias89, 24. Juni 2020
    #14
  15. Beverly
    Beverly Erfahrener User
    Hi,

    wenn ich das richtig verstanden habe, dann so:

    Code:
    Private Sub Workbook_Open()
        ' Benutzer Lager sieht nur Tabelle1 und Tabelle2
        If Environ("UserName") = "Lager" Then
            Worksheets("Tabelle1").Visible = True
            Worksheets("Tabelle2").Visible = True
            Worksheets("Tabelle3").Visible = xlVeryHidden
        ' Benutzer Lager1 sieht nur Tabelle3
        ElseIf Environ("UserName") = "Lager1" Then
            Worksheets("Tabelle3").Visible = True
            Worksheets("Tabelle1").Visible = xlVeryHidden
            Worksheets("Tabelle2").Visible = xlVeryHidden
        ' alle anderen Bentuzer sehen Tabelle1-Tabelle3
        Else
            Worksheets("Tabelle1").Visible = True
            Worksheets("Tabelle2").Visible = True
            Worksheets("Tabelle3").Visible = True
        End If
    End Sub
    
    Bis später,
    Karin
     
    Beverly, 24. Juni 2020
    #15
Thema:

Tabellenblätter userabhängig und Datumsabhängig ausblenden

Die Seite wird geladen...
  1. Tabellenblätter userabhängig und Datumsabhängig ausblenden - Similar Threads - Tabellenblätter userabhängig Datumsabhängig

  2. commandbutton fließend auf dem Tabellenblatt einrichten

    in Microsoft Excel Hilfe
    commandbutton fließend auf dem Tabellenblatt einrichten: Hallo zusammen. Habe mal eine wahrscheinlich einfachen Frage. Ich richte einen CommandButton auf einem Tabellenblatt in EXCEL ein. Nun möchte ich, dass dieser Button immer in der gleichen Position...
  3. Tabellenblatt in neue Mappe kopieren

    in Microsoft Excel Hilfe
    Tabellenblatt in neue Mappe kopieren: Hallo zusammen, ich hoffe, jemand kann mir weiterhelfen. Das Vorhaben: Nach Befüllen einer Excel-Tabelle soll ein Blatt daraus in eine eigenständige Mappe kopiert werden und alle Verknüpfungen...
  4. Beträge in anderem Tabellenblatt anzeigen lassen mit Bezug auf einen Monat und ohne Leerzellen

    in Microsoft Excel Hilfe
    Beträge in anderem Tabellenblatt anzeigen lassen mit Bezug auf einen Monat und ohne Leerzellen: Hello, nun habe ich noch ein kleines Problem... ich habe es schon mal versucht, aber komme nicht zum richtigen Ergebnis... Jetzt soll ein Betrag in einem anderen Tabellenblatt angezeigt...
  5. Daten aus einem Tabellenblatt in ein anderes kopieren ohne Leerzellen anzuzeigen

    in Microsoft Excel Hilfe
    Daten aus einem Tabellenblatt in ein anderes kopieren ohne Leerzellen anzuzeigen: Hallo zusammen, ich habe folgendes Problem. Ich würde gerne in einem Tabellenblatt, bestimmte Daten aus einem anderen Tabellenblatt automatisch anzeigen lassen. Tabellenblatt 1 = Grundlage...
  6. Formel für Auswahlmöglichkeiten im Tabellenblatt

    in Microsoft Excel Hilfe
    Formel für Auswahlmöglichkeiten im Tabellenblatt: Hallo liebe Community, ich hoffe, dass ich die Herausforderung richtig erkläre :-) Ich benötige eine Formel, die mir Daten ausspuckt, wenn in einer anderen Zelle ein bestimmter Wert ausgewählt...
  7. Zeile per Klick farblich machen auch für weitere Tabellenblätter möglich?

    in Microsoft Excel Hilfe
    Zeile per Klick farblich machen auch für weitere Tabellenblätter möglich?: Hallo. Ich habe mehrere Tabellenblätter. Das 1. Blatt ist Bedingt formatiert mit: =ZEILE()=ZELLE("Zeile") dazu die Farbe grün und dem VBA Code: Target.Calculate (Datei ist im Anhang) Wenn ich...
  8. Excel 2003 Tabellenblätter Userabhängig schützen/ausblenden

    in Microsoft Excel Hilfe
    Excel 2003 Tabellenblätter Userabhängig schützen/ausblenden: Hallo, ich hätte hier folgendes Problem zu lösen: (muss gleich mal dazu sagen, dass ich mich in Excel nicht besonders gut auskenn was Makros betrifft). Wir haben bei uns im Unternehmen die...
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden