bin nich sicher, aber...
30.08.2023 12:05:20
Oberschlumpf
Hi Mathias,
...ich glaub, dass ich dich jetzt verstanden hab.
Bevor ich aber wieder mit programmieren beginne, erst mal noch n paar Fragen.
Du kennst die Login-Namen der Kollegen - wir aber nicht! - und bisher hast du uns auch noch nich verraten, welche das sind!
Ich VERMUTE, Loginname = PersNr aus Blatt "Pers", oder?
Wenn ich nämlich falsch vermutet habe, dann würde ich ebenso falsch programmieren, würde ich deine Antwort nich abwarten.
So, und nun der Teil, wo ich - vermute - dich richtig verstanden zu haben
Aufgabe:
1) je nachdem, wer die Datei öffnet (Login z Bsp "11463114"), soll in den Monatsblättern, z Bsp "Juni 23" auch nur DIE Zeilen sehen können, in denen in Spalte C der zum Login zugehörige Name steht (Login = 11463114, zugehöriger Name = "Becher")
1a) Einige Loginnamen dürfen alle Zeilen sehen!
Lösungsidee:
zu 1)
Dim lstrLogin As String
Dim lloRow As Long, lstrPerson As String
'-----------Start Lösung zu 1)--------------------
lstrLogin = Environ("username")
With Sheets("Pers")
For lloRow = 3 To .Cells(.Rows.Count, 1).End(xlUp).Row
If lstrLogin = .Range("AL").Value Then
lstrPerson = .Range("AL").Value
Exit For
End If
Next
End With
With Sheets("Juni 23")
For lloRow = 13 To .Cells(.Rows.Count, 1).End(xlUp).Row
If lstrPerson > .Range("C").Value Then 'wenn Name von Kollege NICHT in geprüfter Zeile in Spalte C steht...
'...dann Zeile ausblenden (hab für Ausblenden auf die Schnelle den Code nicht zur Hand, deswegen nur der Kommentar)
End If
Next
End With
'-----------Ende Lösung zu 1)--------------------
'-----------Start Lösung zu 1a) --------------------
'für jeden Login, der alles sehen darf, musst du in einer Tabelle genau die Logins als solche kennzeichnen, die alles sehen dürfen, z Bsp extra Spalte in Blatt "Pers" wo z Bsp drin steht "alles" oder "admin" oder oder oder
'-----------Ende Lösung zu 1a) --------------------
End Sub
a) in diesem Code muss - nich - jeder einzelne Login namentlich kodiert sein
b) kommt dieser Code in etwa so hin, was du erreichen willst?
Und auch das, was Ralf noch schrieb, ist nicht zu verachten.
Denn...
...Code funktioniert nur, wenn Makros aktiviert sind (wenn Datei öffnen ohne aktiv. Makro, dann sieht jeder "Öffner" auch jede Zeile)
Besser wäre es insgesamt, so denke ich jetzt nachdem Lesen von Ralfs Beitrag, wenn du das Konzept komplett änderst, und zwar:
- deine 7MB-Hauptdatei nur als "Datenbank" im Hintergrund öffnen
- eine andere Excel-Datei erstellen, die eben von jedem Kollegen tatsächlich "sichtbar" geöffnet wird
- und nur in dieser Datei werden nur die Zeilen aus 7MB-Datei ausgelesen, die der Kollege sehen darf
Aber mal schauen, wie es weitergeht.
Ciao
Thorsten