Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1368to1372
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

best. Personen Tabelleblatt zuweisen

best. Personen Tabelleblatt zuweisen
22.07.2014 09:02:37
Heidi
Hallo zusammen,
ich habe zwei Tabellenblätter und möchte gerne per Makro sagen können, welche Person welches Tabellenblatt sehen darf.
Vielleicht gibt es da ein Makro, wäre toll.
Vielen lieben Dank!
Heidi

16
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: best. Personen Tabelleblatt zuweisen
22.07.2014 09:47:49
Ralf
Hallo,
ich kenne 2 Varianten:
Windows-Benutzer abfragen:
WinUser = Environ("USERNAME")

öffne die Eingabeaufforderung und tippe "set" ein gefolgt von einem Enter, hier siehst du die Variablen, die du mit Environ verwenden kannst.
MSOffice Benutzer:
MSOUser = Application.UserName
eine entsprechende If-Then-Abfrage im AutoOpen sollte das erledigen:
Du könntest bspw das nicht erwünschte Blatt auf veryhidden setzen (VORSICHT: nur mit Makro wieder sichtbar zu machen!)
if msouser = "bearbeiter1" then sh1.hidden=xlveryhidden
Gruß
Ralf

Anzeige
AW: best. Personen Tabelleblatt zuweisen
22.07.2014 09:48:48
UweD
Hallo
https://www.herber.de/bbs/user/91616.xlsm
- Datei darf nur MIT aktivierten Macros gestartet werden
- Benutzt wird der Anmeldename am Netzwerk
- - - - -
- beim Schliessen werden alle Blätter ausgeblendet (veryhidden)
- ausser der Hinweis
- - - - -
- beim Öffnen wird der Benutzer abgefragt und sein Blatt eingeblendet, Hinweis aus
- bei unberechtigtem Benutzer bleibt nur das HinweisBlatt an
Option Explicit
'muss in DieseArbeitsmappe
Private Sub Workbook_BeforeClose(Cancel As Boolean)
On Error GoTo Fehler
Dim Sh As Worksheet
Worksheets("Warnung").Visible = True
For Each Sh In Worksheets
If Sh.Name  "Warnung" Then
Sh.Visible = xlVeryHidden
End If
Next
Err.Clear
Fehler:
If Err.Number  0 Then MsgBox "Fehler: " & Err.Number & vbLf & Err.Description: Err. _
Clear
End Sub
Private Sub Workbook_Open()
Stop 'diese Zeile nach dem Testen wegnehmen
On Error GoTo Fehler
Select Case Environ("Username")
Case "Mueller"
Worksheets("Warnung").Visible = xlVeryHidden
Sheets(1).Visible = True
Case "Meier"
Worksheets("Warnung").Visible = xlVeryHidden
Sheets(2).Visible = True
Case Else
MsgBox "Sie sind kein berechtigter User"
End Select
Err.Clear
Fehler:
If Err.Number  0 Then MsgBox "Fehler: " & Err.Number & vbLf & Err.Description: Err. _
Clear
End Sub
Gruß UweD

Anzeige
AW: best. Personen Tabelleblatt zuweisen
22.07.2014 10:07:45
Heidi
Hallo UweD,
vielen Dank schon Mal.
Aber leider funktioniert das Makro bei mir nicht, mache wohl was falsch.
Ich habe in der Datei 2 Tabellenblätter - 1 x Action und 1 x Action2, dann gibt es versch. Mitarbeiter
die nur Action oder Action2 sehen sollen und dann gibt es zwei Pesonen die beide sehen sollen.
Option Explicit
'muss in DieseArbeitsmappe
Private Sub Workbook_BeforeClose(Cancel As Boolean)
On Error GoTo Fehler
Dim Sh As Worksheet
Worksheets("Action").Visible = True
For Each Sh In Worksheets
If Sh.Name  "Action" Then
Sh.Visible = xlVeryHidden
End If
Next
Err.Clear
Fehler:
If Err.Number  0 Then MsgBox "Fehler: " & Err.Number & vbLf & Err.Description: Err. _
Clear
End Sub
Private Sub Workbook_Open()
On Error GoTo Fehler
Select Case Environ("Username")
Case "Heidi"
Worksheets("Action2").Visible = xlVeryHidden
Sheets(1).Visible = True
Case "e0109732"
Worksheets("Action").Visible = xlVeryHidden
Sheets(2).Visible = True
Case Else
MsgBox "Sie sind kein berechtigter User"
End Select
Err.Clear
Fehler:
If Err.Number  0 Then MsgBox "Fehler: " & Err.Number & vbLf & Err.Description: Err. _
Clear
End Sub
Was mache ich falsch?
DANKE

Anzeige
AW: best. Personen Tabelleblatt zuweisen
22.07.2014 10:23:17
UweD
Hallo nochmal
kommt den wenigstent die MSGbox "Sie sind kein berechtigter User"
oder was klappt nicht
hast du die Benutzer mal geprüft (GROOS / kleinschreibung)
Sub testUser()
MsgBox "Benutzer laut Netzwerk: " & Environ("username") & vbLf & vbLf & _
"Rechner laut Netzwerk: " & Environ("computername") & vbLf & vbLf & _
"Benutzer laut Excel: " & Application.UserName
End Sub

Muss im Case so eingestellt werden, wie bei Benutzer laut Netzwerk:'xxx" angezeigt wird
- - - -
Mehrere User kannst du durch Komma separieren..
Private Sub Workbook_Open()
On Error GoTo Fehler
Select Case Environ("Username")
Case "Heidi","Müller"
Worksheets("Action2").Visible = xlVeryHidden
Sheets("Action").Visible = True
Case "Heidi","e0109732"
Worksheets("Action").Visible = xlVeryHidden
Sheets("Action2").Visible = True
Case Else
MsgBox "Sie sind kein berechtigter User"
End Select
Err.Clear
Fehler:
If Err.Number  0 Then MsgBox "Fehler: " & Err.Number & vbLf & Err.Description: Err. _
Clear
End Sub

Anzeige
AW: best. Personen Tabelleblatt zuweisen
22.07.2014 10:49:46
UweD
Ich noch mal
du musst, so wie in der Beispieldatei auch, ein Blatt "Warnung" anlegen.
dort steht nur der Hinweis, "Nur mit Macros starten"
Die anderen Blätter werden auf veryhidden gesetzt.
veryhidden: Warum? Dann kann der Benutzer das auch nicht einfach über 'Einblenden' wieder rückgängig machen, sondern nur im VBA - Editor
Private Sub Workbook_BeforeClose(Cancel As Boolean)
On Error GoTo Fehler
Worksheets("Warnung").Visible = True
Worksheets("Action").Visible = xlVeryHidden
Worksheets("Action2").Visible = xlVeryHidden
Err.Clear
Fehler:
If Err.Number  0 Then MsgBox "Fehler: " & Err.Number & vbLf & Err.Description: Err. _
Clear
End Sub
Gruß UweD

Anzeige
AW: best. Personen Tabelleblatt zuweisen
22.07.2014 10:50:47
Heidi
Hallo UweD,
klappt leider nicht :-(
Hab dir mal eine Testdatei begefügt:

Die Datei https://www.herber.de/bbs/user/91620.xlsm wurde aus Datenschutzgründen gelöscht


DANKE :-)

AW: best. Personen Tabelleblatt zuweisen
22.07.2014 11:14:31
UweD
Du hast kein Macro in der Datei...
das muss hier hin.
Userbild
habs bei deiner Datei jetzt eingebaut.
(Eben war es Action2 jetzt Action1)
https://www.herber.de/bbs/user/91622.xlsm
Gruß UweD

Anzeige
AW: best. Personen Tabelleblatt zuweisen
22.07.2014 11:43:34
Heidi
Hallo UweD,
vielen Dank - ich hatte es vergessen, sorry.
Leider funktioniert es immer noch nicht.
Es kommt immer eine Fehlermeldung:
Userbild
Hier das Makro wo ich mich als User eingetragen habe:
Userbild
DANKE :-)

AW: best. Personen Tabelleblatt zuweisen
22.07.2014 12:00:08
UweD
Hi
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim Wb
Stop
Set Wb = ThisWorkbook
'On Error GoTo Fehler
Wb.Worksheets("Warnung").Visible = True
Wb.Worksheets("Action").Visible = xlVeryHidden
Wb.Worksheets("Action1").Visible = xlVeryHidden
Err.Clear
Fehler:
If Err.Number  0 Then MsgBox "Fehler: " & Err.Number & vbLf & Err.Description: Err. _
Clear
End Sub
Private Sub Workbook_Open()
Dim Wb
Stop
Set Wb = ThisWorkbook
'On Error GoTo Fehler
Select Case Environ("Username")
Case "e0109732", "Mueller", "Schmidt"
Wb.Worksheets("Warnung").Visible = xlVeryHidden
Wb.Worksheets("Action").Visible = True
Case "e0109732", "Meier"
Wb.Worksheets("Warnung").Visible = xlVeryHidden
Wb.Worksheets("Action1").Visible = True
Case Else
MsgBox "Sie sind kein berechtigter User"
End Select
Err.Clear
Fehler:
If Err.Number  0 Then MsgBox "Fehler: " & Err.Number & vbLf & Err.Description: Err. _
Clear
End Sub
Hast du mehrere Dateien offen?
- Ich hab mal noch auf das Workbook verwiesen
- und den Stop nochmal reingenommen
- und den on error auskommentiert
- durchlaufe das macro mal im Schrittmodus mit F8
in welcher Zeile tritt der Fehler auf?
kann eigendlich nur sein, wenn das Blatt nicht da ist.

Anzeige
AW: best. Personen Tabelleblatt zuweisen
22.07.2014 12:51:37
Heidi
Hallo UweD,
vielen Dank - es klappt.
Ein Problem habe ich aber noch, vielleicht hast du noch eine Lösung.
Wenn ein Mitarbeiter aber beide Blätter sehen soll Action & Action1
und ich diesen eintrage im Makro - zeigt er diese aber nicht an, sondern nur 1 Blatt?
DANKE

der Code hat Fehler und Falltüren...
22.07.2014 14:11:48
EtoPHG
Heidi und UweD,
1. Wenn nur das Blatt Warnung eingeblendet ist, kann es nicht auf ausgeblendet werden, da mindestens 1 Blatt pro Arbeitsmappe eingeblendet sein muss. Also zuerst einblenden, dann ausblenden!
2. Ein Select Case bricht die Prüfung ab, sobald eine Wahr-Bedingung eintritt, d.h. es kann nicht der gleiche Username in mehreren Case vorkommen (mit der Absicht, mehrere Blätter für diesen einzublenden).
Ich würde:
a) im Blatt "Warnung" einen Tabellenbereich mit Usernamen/Blattname/Blattname... erstellen.
b) Diesen Tabellenbereich (Zeilen) ausblenden und das Blatt schützen
c) Im Workbook_Open die Zeile mit dem Usernamen suchen und die Blätter einblenden oder ggf. eine Meldung, dass der User keinen Zugriff hat, wenn er nicht gefunden wird.
d) Bei mind. einem User (z.B. "Heidi") das "Warnungsblatt" nicht ausblenden und auch noch den Blattschutz aufheben. Damit kann dieser Superuser, die "User-Blatt-Verwaltung" wieder eingeblenden und neue User aufnehmen, bzw. andere umkonfigurieren.
Gruess Hansueli

Anzeige
AW: der Code hat Fehler und Falltüren...
23.07.2014 07:56:54
Heidi
Guten Morgen Hansueli,
vielen Dank für die Rückmeldung.
Leider ist mein VBE nicht besonders gut, könntest du evtl. mein Makro dementsprechend anpassen?
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim Wb
Set Wb = ThisWorkbook
Wb.Worksheets("Warnung").Visible = True
Wb.Worksheets("Action").Visible = xlVeryHidden
Wb.Worksheets("Action1").Visible = xlVeryHidden
Err.Clear
Fehler:
If Err.Number  0 Then MsgBox "Fehler: " & Err.Number & vbLf & Err.Description: Err. _
Clear
End Sub
Private Sub Workbook_Open()
Dim Wb
Set Wb = ThisWorkbook
Select Case Environ("Username")
Case "Alex", "Sommer"
Wb.Worksheets("Warnung").Visible = xlVeryHidden
Wb.Worksheets("Action").Visible = True
Case "Sabine", "Test", "Olaf", "e0109732"
Wb.Worksheets("Warnung").Visible = xlVeryHidden
Wb.Worksheets("Action1").Visible = True
Case Else
MsgBox "Sie sind kein berechtigter User"
End Select
Err.Clear
Fehler:
If Err.Number  0 Then MsgBox "Fehler: " & Err.Number & vbLf & Err.Description: Err. _
Clear
End Sub
Ausprobieren und Anpassen kriege ich dann sicherlich hin. Wäre toll.
Vielen lieben Dank.
Gruß
Heidi

Anzeige
AW: der Code hat Fehler und Falltüren...
23.07.2014 08:54:53
UweD
Hallo ihr zwei
Das mit dem case Abbruch habe ich nicht bedacht...
Mit dem If vergleich klappt es aber...
- - -
Ach habe ich die Reihenfolge Aus/Einblenden geändert.
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim Wb
Stop
Set Wb = ThisWorkbook
On Error GoTo Fehler
Wb.Worksheets("Warnung").Visible = True
Wb.Worksheets("Action").Visible = xlVeryHidden
Wb.Worksheets("Action1").Visible = xlVeryHidden
Err.Clear
Fehler:
If Err.Number  0 Then MsgBox "Fehler: " & Err.Number & vbLf & Err.Description: Err. _
Clear
End Sub
Private Sub Workbook_Open()
Dim Wb, Wer As String
Stop 'kann weg
Set Wb = ThisWorkbook
Wer = Environ("Username")
On Error GoTo Fehler
If Wer = "e0109732" Or Wer = "Mueller" Or Wer = "Schmidt" Then
MsgBox "Fall 1"
Wb.Worksheets("Action").Visible = True
Wb.Worksheets("Warnung").Visible = xlVeryHidden
End If
If Wer = "e0109732" Or Wer = "Weber" Or Wer = "Meier" Then
MsgBox "Fall 2"
Wb.Worksheets("Action1").Visible = True
Wb.Worksheets("Warnung").Visible = xlVeryHidden
Else
MsgBox "Sie sind kein berechtigter User"
End If
Err.Clear
Fehler:
If Err.Number  0 Then MsgBox "Fehler: " & Err.Number & vbLf & Err.Description: Err. _
Clear
End Sub
Gruß UweD

AW: der Code hat Fehler und Falltüren...
23.07.2014 09:01:22
Heidi
Hallo UweD,
wenn ich das Makro jetzt so verwende, dann zeigt er mir immer beide Tabellenblätter an "Action und Action1", egal ob ich 1 x oder 2 x drin stehe?
Danke und Gruß
Heidi

AW: der Code hat Fehler und Falltüren...
23.07.2014 09:08:54
Heidi
Hallo,
hat geklappt, sorry, muss ja nach der Änderung und Speichern die Datei erst schließen und wieder öffnen, dann klappt es.
Vielen lieben DANK :-)

AW: Noch ein Fehler drin
23.07.2014 09:48:22
UweD
Hi
Im Fall 1 wurde leider auch die MSGbox "Sie sind kein berechtigter User" angezeigt
Jetzt habe ich aber alle Fälle mal durchgespielt.
Nacheinander die ' vor dem Wer= gesetzt bzw weggenommen

Private Sub Workbook_Open()
Call aus ' zum Testen, kann danach weg
Dim Wb, Wer As String
Dim Ja1 As String, Ja2 As String
Ja1 = "e0109732, Mueller, Schmidt, UweD"
Ja2 = "e0109732, Weber, Meier"
Stop 'kann weg
Set Wb = ThisWorkbook
Wer = Environ("Username")
'*** Testen
'Wer = "e0109732" ' beide
'Wer = "Keiner" ' nichts
'Wer = "Meier" ' Nur Action1
Wer = "Mueller" ' Nur Action
'Ende Testen
On Error GoTo Fehler
If InStr(Ja1, Wer) > 0 Then
MsgBox "Action ein"
Wb.Worksheets("Action").Visible = True
Wb.Worksheets("Warnung").Visible = xlVeryHidden
End If
If InStr(Ja2, Wer) > 0 Then
MsgBox "Action 1 ein"
Wb.Worksheets("Action1").Visible = True
Wb.Worksheets("Warnung").Visible = xlVeryHidden
End If
If InStr(Ja1 & Ja2, Wer) = 0 Then
MsgBox "Sie sind kein berechtigter User"
End If
Err.Clear
Fehler:
If Err.Number  0 Then MsgBox "Fehler: " & Err.Number & vbLf & Err.Description: Err. _
Clear
End Sub
Sub aus()
Dim Wb
Set Wb = ThisWorkbook
On Error GoTo Fehler
Wb.Worksheets("Warnung").Visible = True
Wb.Worksheets("Action").Visible = xlVeryHidden
Wb.Worksheets("Action1").Visible = xlVeryHidden
Err.Clear
Fehler:
If Err.Number  0 Then MsgBox "Fehler: " & Err.Number & vbLf & Err.Description: Err. _
Clear
End Sub
Gruß UweD

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige