Microsoft Excel

Herbers Excel/VBA-Archiv

ausgelesenen Wert weiter verarbeiten


Betrifft: ausgelesenen Wert weiter verarbeiten
von: Guntram
Geschrieben am: 05.12.2018 09:14:45

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

  

Betrifft: AW: ausgelesenen Wert weiter verarbeiten
von: Nepumuk
Geschrieben am: 05.12.2018 09:25:05

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


  

Betrifft: AW: ausgelesenen Wert weiter verarbeiten
von: Guntram
Geschrieben am: 05.12.2018 09:32:54

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


  

Betrifft: AW: String und long
von: Fennek
Geschrieben am: 05.12.2018 09:26:17

Hallo,

Environ("Username") liefert einen String.

mfg


  

Betrifft: AW: String und long
von: Guntram
Geschrieben am: 05.12.2018 09:39:10

Danke auch Dir Fennek,

das ist dann die Antwort auf die Typunverträglichkeit ;)

lG

Guntram


  

Betrifft: AW: String und long
von: Guntram
Geschrieben am: 05.12.2018 14:39:08

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