Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
836to840
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
836to840
836to840
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Brauche Hilfe bei einer Berechtigungsliste

Brauche Hilfe bei einer Berechtigungsliste
22.01.2007 07:39:05
Thomas
Guten Tag,
ich möchte eine kleine Datenbank erstellen mit einer Prüfliste, wer welche Berechtigungen hat.
In der Datenbank.xls gibt es dann halt verschiedene Spalten, zB Name Vorname Personalnummer etc und dann halt die verschiedenen Berechtigungen, wo dann bei dem entsprechenden Mitarbeiter entweder ein x (wenn er die berechtigung hat) oder nichts gesetzt wird.
In einer anderen Datei (Prüfliste.xls) gibt man dann den Nachnamen ein und er erstellt automatisch eine Berechtigungsliste, wo alle Berechtigungen, die derjenige hat, untereinander aufgelistet sind.
Mit Sverweis könnte ich mir die Allgemeinen Informationen holen, allerdings weiß ich nicht genau wie ich das mit den Berechtigungen am schlausten löse. Wenn ich die WENN Funktion nutze und er die berechtigunge nicht hat, ist ja eine ganze Zeile leer, aber es sollen einfach nur die, die er hat, untereinander stehen.
Er müsste sozusagen auslesen, bei welchen Spalten, wo A = Name ist, ein x gesetzt ist und dann schreibt er den Eintrag der ersten Zeile aus der Spalte (das ist ja der Berechtigungsname) in die Liste.
Kann mir jemand einen hinweis auf eine Funktion geben, die ich nutzen sollte? Oder gibts noch andere Tipps?
Bin über jede Hilfe sehr dankbar.
Viele Grüße
Thomas

20
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Brauche Hilfe bei einer Berechtigungsliste
22.01.2007 08:31:40
stormy_weathers
Hallo,
Du solltest Dir überlegen, ob die Berechtigungen nicht in eine Zeile erfasst werden, dann ist es vielleicht einfacher: name, vornam, per.-nr., ... berechtigung 1, berechtigung2, ...
Grüße
stormy
AW: Brauche Hilfe bei einer Berechtigungsliste
22.01.2007 09:16:33
Thomas
Hm, ja das hatte ich mir auch schon überlegt, wird dann allerdings unübersichtlicher und schwerer eine Berechtigung im Nachhinein hinzuzufügen.
Ich habe mir auch nochmal ein paar Gedanken zu einem VBA Script gemacht. Vielleicht kann mir jemand helfen, sie in VBA umzusetzen.
Zuerst brauchen wir ja irgendwie die Zeile in der Datenbank.xls um die es gehen soll:
ZeileX = Zeile wo $A (Spalte A in der Datenbank.xls) = $A$8 (In das Feld, in der Prüfliste.xls, wird der Name geschrieben)
Dann vielleicht eine For each Bedingung:
For each Spalte in ZeileX (jetzt soll er die datenbank.xls durchsuchen)
if inhalt = "x"
schreibe inhalt zeile 1 von der spalte in prüfliste.xls
sringe 1 zeile in prüfliste.xls weiter
Und dann durchsucht er wieder weiter nach der nächsten Spalte mit dem Inhalt "x".
Geht das so?
Viele Grüße
Anzeige
AW: Brauche Hilfe bei einer Berechtigungsliste
22.01.2007 09:50:20
stormy_weathers
Hallo,
wieso wird es schwieriger die Berechtigungen im Nachgang zu ändern? Die Berechtigungen werden doch eh im Moment der "Abfrage" oder der "Ausführung" überprüft, oder? Alles andere macht meiner Meinung nach ja keinen Sinn.
Un in der Tabelle "Berechtigungen" (nenne wir sie mal so) kannst Du bei Änderungen einfach in der entsprechenden Spalte der BerechtigungN ein X setzen und somit die Berechtigung zulassen.
gruß
stormy
AW: Brauche Hilfe bei einer Berechtigungsliste
22.01.2007 10:49:49
Thomas
Hey,
jetzt bin ich etwas durcheinander, das mit dem x setzen wollte ich ja. Du meintest doch, das ich die Berechtigung als Wort direkt in die Zeile jedes Mitarbeiters schreibe.
Also:
Mustermann, Max - Team1 - 04467899 (Personalnummer) - Berechtigung1 - Berechtigung2 - Berechtigung3 - ...
Und ich meinte ja:
Name - Team - Personalnummer - Berechtigung1 - Berechtigung2 - Berechtigung3 - ...
Mustermann, Max - Team1 - 04467899 - x - - x - &lt- also dann hat er halt berechtigung1 und 3
Und in der andren File steht dann direkt untereinander in einer Liste:
Berechtigung1
Berechtigung3
Viele Grüße
Thomas
PS: Vielen Dank schonmal für die Mühe!
Anzeige
AW: Brauche Hilfe bei einer Berechtigungsliste
22.01.2007 09:55:13
Martin
Hallo Thomas,
für dieses Problem hat Microsoft den AUTOFILTER erfunden.
Gruß
Martin Beck
AW: Brauche Hilfe bei einer Berechtigungsliste
22.01.2007 10:52:39
Thomas
Hallo Martin,
Das wurde mir gerade schonmal gesagt, nur wie soll ich den Autofilter benutzen? Er soll ja die Daten aus der datenbank.xls holen, in der Datenbank.xls soll niemand rumeditieren, noch einen Autofilter benutzen. Vielleicht kenne ich nicht alle Funktionen des Autofilters, so dass man ihn irgendwie benutzen kann um in Dokument1 Inhalte aus Dokument2 zu filtern?
Ich verstehe nicht so ganz...
Bitte um Aufklärung :-)
Danke für die Hilfe!
AW: Brauche Hilfe bei einer Berechtigungsliste
22.01.2007 11:21:13
Martin
Hallo Thomas,
wenn niemand in der Datenbank arbeiten soll, dann vielleicht als Ansatz folgendes:

Sub Berechtigungen()
Set quelle = Workbooks("Mappe1.xls").Worksheets("Daten").Range("A1:F5")
Set Such = Workbooks("Mappe2.xls").Worksheets("Ergebnis").Range("A1")
x = 1
LSp = quelle.Cells(quelle.Cells.Count).Column
Zeile = quelle.Cells.Find(What:=Such, After:=Cells(1)).Row
For i = 4 To LSp
If quelle.Cells(Zeile, i) = "x" Then
Such.Offset(x, 0) = quelle.Cells(1, i)
x = x + 1
End If
Next i
End Sub

Voraussetzungen:
Datei "Mappe1.xls" enthält die Datenbank in der Tabelle "Daten". Die Einträge stehen im Bereich A1:F5 und die Berechtigungen werden ab Spalte D eingetragen. Der Nachname, nach dem gesucht wird, steht in Spalte A. Jeder Nachname kommt nur einmal vor.
In Datei "Mappe2.xls" wird in Zelle A1 der Tabelle "Daten" der zu suchende Nachname eingetragen, die Berechtigungen stehen ab A2 in der gleichen Spalte.
Du musst den Code an Deine Verhältnisse anpassen.
Gruß
Martin Beck
Anzeige
AW: Brauche Hilfe bei einer Berechtigungsliste
22.01.2007 11:36:38
Thomas
Cool, vielen Dank, Martin!
Ich werde das ganze ausprobieren und dann Feedback geben, Danke!
Grüße
Thomas
AW: Brauche Hilfe bei einer Berechtigungsliste
22.01.2007 11:45:00
Thomas
Hi,
habe das jetzt so umgeschrieben:

Sub Berechtigungen()
Set quelle = Workbooks("Datenbank.xls").Worksheets("Datenbank").Range("A1:F5")
Set Such = Workbooks("sicherheitsstufe.xls").Worksheets("Ergebnis").Range("A8")
x = 1
LSp = quelle.Cells(quelle.Cells.Count).Column
Zeile = quelle.Cells.Find(What:=Such, After:=Cells(1)).Row
For i = 4 To LSp
If quelle.Cells(Zeile, i) = "x" Then
Such.Offset(x, 0) = quelle.Cells(1, i)
x = x + 1
End If
Next i
End Sub

Allerdings fehlt mir glaub ich noch ein wenig Grundwissen. Habe das jetzt in den Microsoft Visual Basic Editor reingeschrieben, muss ich das in der Excel Datei jetzt noch irgendwie einbinden? Oder müsste er es automatisch anzeigen? Noch zeigt er nix an...
Die Einträge sollen ab B10 bis B26 eingetragen werden, ich finde die stelle im Code nicht, wo ich das editieren muss.
Liebe Grüße
Thomas
Anzeige
AW: Brauche Hilfe bei einer Berechtigungsliste
22.01.2007 11:46:39
Thomas
Ah, ich habe den Fehler gefunden, Worksheets hatte ich nicht umbenannt (Ergebnis).
Es geht! Nur müsste er es in Spalte B ab Zeile 10 schreiben.
Vielen vielen Dank!
AW: Brauche Hilfe bei einer Berechtigungsliste
22.01.2007 11:49:30
Thomas
Sorry für die vielen Posts hintereinander...
Ein weiteres Problem besteht noch. Wie sage ich ihm, dass er die Funktion jedes mal ausführt, wenn A8 einen neuen Eintrag bekommt? Bis jetzt muss ich immer im Editor auf das Play Symbol klicken.
AW: Brauche Hilfe bei einer Berechtigungsliste
22.01.2007 11:57:09
Martin
Hallo Thomas,
gibst Du in A8 jeweils den betreffenden Namen ein, für den die Berechtigungen gesucht werden? Dann muss es in dem zuletzt geposteten Code x=2 statt x=9 heißen.
Das automatische starten geht über die Ereignisprozedur "Worksheet_Change". Am besten, Du postest noch einmal den von Dir aktuell verwendeten Code, dann passe ich den Code an.
Gruß
Martin
Anzeige
AW: Brauche Hilfe bei einer Berechtigungsliste
22.01.2007 12:03:47
Thomas
Hallo Martin,
Ich hatte erst den alten Code weiterbenutzt und unten beim If einfach das x+1 vor den such.offset geschrieben, dann passte es von der zeile her auch. Das mit dem 0 und 1 und 2 usw. für die Spalte hatte ich auch herausgefunden allerdings geht , 1 nicht. Das liegt wohl daran, dass A einzeln B C D E zusammen gefasst und F wieder einzeln ist. ,2 schreibt mir nämlich alles in spalte F. Gibt es dafür Abhilfe oder müsste ich das Layout anpassen?
Aktueller Code:

Sub Berechtigungen()
Set quelle = Workbooks("Datenbank.xls").Worksheets("Datenbank").Range("A1:G5")
Set Such = Workbooks("sicherheitsstufe.xls").Worksheets("Sicherheitsstufe").Range("A8")
x = 2
LSp = quelle.Cells(quelle.Cells.Count).Column
Zeile = quelle.Cells.Find(What:=Such, After:=Cells(1)).Row
For i = 4 To LSp
If quelle.Cells(Zeile, i) = "x" Then
Such.Offset(x, 1) = quelle.Cells(1, i)
x = x + 1
End If
Next i
End Sub

Anzeige
AW: Brauche Hilfe bei einer Berechtigungsliste
22.01.2007 12:06:15
Thomas
Mir ist gerade noch aufgefallen, dass wenn ich einen Namen mit weniger Berechtigungen nehme, nachdem schon einer mit mehreren drin stand, überschreibt er zwar die ersten Berechtigungen, aber löscht die alten nicht. Kannst du noch einen Befehl mit einbauen, der die Spalten B10 - B26 erst resettet? Danke!
Grüße
AW: Brauche Hilfe bei einer Berechtigungsliste
22.01.2007 12:18:31
Martin
Hallo Thomas,
bleiben wir erstmal bei der manuellen Variante, bis die korrekt funktioniert.

Sub Berechtigungen()
Set quelle = Workbooks("Datenbank.xls").Worksheets("Datenbank").Range("A1:G5")
Set Such = Workbooks("sicherheitsstufe.xls").Worksheets("Sicherheitsstufe").Range("A8")
Workbooks("sicherheitsstufe.xls").Worksheets("Sicherheitsstufe").Range("B10:B28").ClearContents
x = 0
LSp = quelle.Cells(quelle.Cells.Count).Column
Zeile = quelle.Cells.Find(What:=Such, After:=Cells(1)).Row
For i = 4 To LSp
If quelle.Cells(Zeile, i) = "x" Then
Range("B10").Offset(x, 0) = quelle.Cells(1, i)
x = x + 1
End If
Next i
End Sub

Ob er jetzt in Spalte B schreibt musst Du testen. Hast Du die Spalten A-E verbunden? Dann gibt es bestimmt Probleme.
Noch was: in der 1. Codezeile stimmt die Angabe Range("A1:G5") mit Sicherheit nicht. Hier musst Du den Bereich angeben, der im Blatt "Datenbank" belegt ist.
Gruß
Martin
P.S. Bei Antworten bitte den zuletzt verwendeten Code mit posten.
Anzeige
AW: Brauche Hilfe bei einer Berechtigungsliste
22.01.2007 13:53:49
Thomas
Hallo Martin,
sorry, hatte eben einen Auftrag und konnte bis jetzt nicht antworten.
Bei deinem Code zeigt er mir folgenden Fehler an:
Laufzeitfehler '1004':
Anwendungs- oder objektdefinierter Fehler
Zusammengefasst sind Spalte B-E. Allerdings geht das Layout technisch wohl nicht anders umzusetzen...
Grüße
Thomas
Aktueller Code:

Sub Berechtigungen()
Set quelle = Workbooks("Datenbank.xls").Worksheets("Datenbank").Range("D1:G5")
Set Such = Workbooks("sicherheitsstufe.xls").Worksheets("Sicherheitsstufe").Range("A8")
x = 2
LSp = quelle.Cells(quelle.Cells.Count).Column
Zeile = quelle.Cells.Find(What:=Such, After:=Cells(1)).Row
For i = 4 To LSp
If quelle.Cells(Zeile, i) = "x" Then
Such.Offset(x, 0) = quelle.Cells(1, i)
x = x + 1
End If
Next i
End Sub

Anzeige
AW: Brauche Hilfe bei einer Berechtigungsliste
22.01.2007 14:09:46
Thomas
Habe den Code jetzt soweit angepasst, das alles funktioniert:

Sub Berechtigungen()
Set quelle = Workbooks("Datenbank.xls").Worksheets("Datenbank").Range("A1:G5")
Set Such = Workbooks("sicherheitsstufe.xls").Worksheets("Sicherheitsstufe").Range("A8")
Worksheets("Sicherheitsstufe").Range("B10:E26").ClearContents
x = 0
LSp = quelle.Cells(quelle.Cells.Count).Column
Zeile = quelle.Cells.Find(What:=Such, After:=Cells(1)).Row
For i = 4 To LSp
If quelle.Cells(Zeile, i) = "x" Then
Range("B10").Offset(x, 0) = quelle.Cells(1, i)
x = x + 1
End If
Next i
End Sub

Es fehlt nur noch, dass er das automatisch ausfüllt.
Vielen Dank für alles!
Anzeige
AW: Brauche Hilfe bei einer Berechtigungsliste
23.01.2007 11:59:32
mb
Hallo Thomas,
Rechtsclick auf den Reiter der Tabelle "Sicherheitsstude", "Code anzeigen" auswählich und dann folgenden Code inden sich öffnenden Bereich kopieren:

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$A$8" Then
Call Berechtigungen1
End If
End Sub

Gruß
Martin
AW: Brauche Hilfe bei einer Berechtigungsliste
23.01.2007 14:13:58
Thomas
Vielen Dank,
du hast mir wirklich sehr geholfen und ohne deine Hilfe hätte ich es definitiv nicht hinbekommen!
Großes Lob!
Thomas
AW: Brauche Hilfe bei einer Berechtigungsliste
22.01.2007 11:53:10
Martin
Hallo Thomas,
wenn der Suchbegriff in A1 steht und die Berechtigungen ab B10 eingetragen werden sollen, dann folgenden Code:

Sub Berechtigungen()
Set quelle = Workbooks("Datenbank.xls").Worksheets("Datenbank").Range("A1:F5")
Set Such = Workbooks("sicherheitsstufe.xls").Worksheets("Ergebnis").Range("A8")
x = 9
LSp = quelle.Cells(quelle.Cells.Count).Column
Zeile = quelle.Cells.Find(What:=Such, After:=Cells(1)).Row
For i = 4 To LSp
If quelle.Cells(Zeile, i) = "x" Then
Such.Offset(x, 1) = quelle.Cells(1, i)
x = x + 1
End If
Next i
End Sub

Gruß
Martin

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige