Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
24.04.2024 17:19:09
Anzeige
Archiv - Navigation
1660to1664
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

ausgelesenen Wert weiter verarbeiten

ausgelesenen Wert weiter verarbeiten
05.12.2018 09:14:45
Guntram
Hallo und guten Morgen,
Ich habe den Versuch gestartet, eine Excel-Datei Benutzer definiert darzustellen. Soll heißen unterschiedliche Benutzer sehen unterschiedliche Tabellenblätter.
Das funktioniert einwandfrei. Das Login habe ich auch über eine Listbox gelöst.
Ich habe aber keine Lust mehr von den Anwendern jedes mal gefragt zu werden warum wieso weshalb und man könnte doch den namen anderer eingeben blaaaaaaa. Und bin darauf gestoßen, dass ich ja die Windowskennung auslesen könnte.
So nun zu meinem Problem:
########################
Sub UserSettings()
Dim usrS As Long
Dim usrZ As Long
'Initiializieren
usrZ = VBA.Environ("Username")
With Sheets("Passwörter")
For usrZ = 2 To .Cells(Rows.Count, 1).End(xlUp).Row
If .Cells(usrZ, 7)  "" Then
For usrS = 9 To .Cells(1, Columns.Count).End xlUp).Column
If .Cells(usrZ, usrS)  "" Then
Sheets(.Cells(1, usrS).Value).Visible = True
End If
Next
Else
MsgBox "your User is no longer activated for this sheet !"
End If
Next
End With
'Unload Me
'Sheets("Cockpit").Select
End Sub
###################
Also der Code soll folgendes machen:
on Startup (kommt nocht ;)) run Usersettings, dann
mal schön alle Registerblätter bis auf eines via 'Initialisieren' ausblenden.
Im Anschluss Userkennung auslesen
diese dann in meiner "Passworttabelle suchen,
überprüfen ob aktiv
und dann mit der zweiten For-Schleife die jeweiligen berechtigten Registerblätter auslesen und einblenden.
Mein Problem ist jetzt in der Übergabe der Variable userZ. Ich kann mit dem ausgelesenen Wert nicht wirklich arbeiten, da ich den Pointer nicht setzen kann.
also ich hätte gern dass er den ausgelesenen Wert Sucht, und die Zeile in der der Wert dann steht übernimmt damit ich später mit dieser die Registerblattberechtigungen auslesen kann.
Falls jemand auch einen Fehler in der Anwendung meine IFs und FORs findet wäre ich über Stichworte sehr glücklich, dann kann ich das auch eleganter/funktional lösen versuchen.
Danke für Eure/Deine Mühen vorab.
lG Guntram

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: ausgelesenen Wert weiter verarbeiten
05.12.2018 09:25:05
Nepumuk
Hallo Guntram,
da ich die Tabelle "Passwörter" nicht kenne kann ich nur raten:
Sub UserSettings()
Dim usrS As Long
Dim usrZ As Long
Dim strUser As String
'Initiializieren
strUser = VBA.Environ("USERNAME")
With Worksheets("Passwörter")
For usrZ = 2 To .Cells(.Rows.Count, 1).End(xlUp).Row
If .Cells(usrZ, 7).Value = strUser Then
For usrS = 9 To .Cells(usrZ, .Columns.Count).End(xlToLeft).Column
If .Cells(usrZ, usrS).Value  "" Then _
Sheets(.Cells(usrZ, usrS).Value).Visible = xlSheetVisible
Next
Else
MsgBox "your User is no longer activated for this sheet !"
End If
Next
End With
End Sub

Gruß
Nepumuk
Anzeige
AW: ausgelesenen Wert weiter verarbeiten
05.12.2018 09:32:54
Guntram
Nepomuk es Fetzt!
VIELEN LIEBEN DANK!
An eine zusätzliche Variable hab ich schon gar nicht mehr gedacht.
da war ich wohl schon "betriebsblind".
lG und schönen Tag noch
Guntram
AW: String und long
05.12.2018 09:26:17
Fennek
Hallo,
Environ("Username") liefert einen String.
mfg
AW: String und long
05.12.2018 09:39:10
Guntram
Danke auch Dir Fennek,
das ist dann die Antwort auf die Typunverträglichkeit ;)
lG
Guntram
AW: String und long
05.12.2018 14:39:08
Guntram
Für alle eventuell Interessierten hier der finale Code:
Private Sub Workbook_Open() 'User_auslesen()
Dim usrS As Long
Dim usrZ As Long
Dim strUser As String
strUser = VBA.Environ("USERNAME")
With Worksheets("Passwörter")
For usrZ = 2 To .Cells(.Rows.Count, 1).End(xlUp).Row
If .Cells(usrZ, 1).Value = strUser Then
For usrS = 9 To .Cells(usrZ, .Columns.Count).End(xlToLeft).Column
If .Cells(usrZ, usrS)  "" Then
Sheets(.Cells(1, usrS).Value).Visible = True
End If
Next
End If
Next
End With
End Sub
lG
Guntram
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige