Clever-Excel-Forum

Normale Version: dynamische Benutzerverwaltung mit Einschränkung der Tabellenansicht
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo liebe Excel-Spezialisten,

ich habe von "VBA Trainer" eine sehr schöne Userverwaltung adaptiert, die mir als Vorlage sehr geholfen hat. Die Userverwaltung steuert die Ansicht der Tabellenblätter, die je nach Benutzername/Passwort nur eingeschränkt zur Ansicht kommt. Aktuell hinterlegte drei User (immer Name/PW) sind folgende: Admin/Admin1 - User1/Test1 - User2/Test2. Der Admin sieht alle Tabellenblätter. Der User1 als Profil "Basic" nur Deckblatt und Stadt. Der User2 als Profil "Profi" sieht alles bis auf die Benutzerverwaltung.

Die Verwaltung der zur Ansicht kommenden Tabellenblätter ist im VBA Code aktuell fest verdrahtet. Das würde ich gerne dynamisch durch entsprechende X-Markierungen in der Benutzerverwaltung ändern. Diesen Schritt schaffe ich nicht, kann mich auch nicht entscheiden ob eine einfache X-Markierung oder evtl. auch Konrollkästchen oder ActiveX-Steuerelemente besser geeignet sind.

Ziel ist es, genau die Tabellenblätter zur Ansicht zu bringen, die in der Benutzerverwaltung jeweils hinter den Usern in der kleinen Matrix hinterlegt sind.

Konkretes Beispiel: Melde ich mich als User2 mit PW Test2 an, sollen die Tabellenblätter Deckblatt, Stadt, Land, Fluss zur Ansicht kommen, gesteuert aber über die X-Markierung der Benutzerverwaltung.

Wäre total lieb, wenn mir jemand einen Tipp zur Umsetzung geben kann, wie man das sinnvoll umsetzt.

[attachment=48228]

[attachment=48231]
Hi,

in den Makros ist hinterlegt, wer was sehen darf. Arbeite das durch und ändere es nach Deinen Wünschen.
Hallo BoskoBiati,

das die Ansichtsteuerung in den Makros verankert ist, dass ist ja klar. Das meinte ich mit "fest verdrahtet". Ich hätte die Makro Einstellung aber gerne so geändert, dass die Ansicht über die X-Markierung in der Benutzerverwaltung die Steuerung übernimmt.

VG
BSMRalle
Hallöchen,

eine Abfrage nach der Zugehörigkeit zu einer Gruppe brauchst Du hier nicht. Im Prinzip kann man es so lösen:

Code:
'Schleife von Spalte E bis zum letzten Eintrag in Zeile 1
For icnt = 5 To Cells(1, Columns.Count).End(xlToLeft).Column
  'Wenn x in der Spalte / Zeile des Benutzers, dann Blatt mit dem Namen aus Zeile 1 einblenden
  If Cells(rng.Row, icnt) = "x" Then Sheets(Cells(1, icnt).Value).Visible = True
Next