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

Berechtigung Arbeitsblätter

Berechtigung Arbeitsblätter
13.02.2008 14:45:00
markus473
Hallo zusammen,
ich habe hier folgende Datei gefunden:
https://www.herber.de/bbs/user/49890.xls
Kann man das Makro so umgestalten, das bei der Anmeldung durch den "admin" und "Holger" ein weiteres Makro ausgeführt wird?
Und wenn ja wie müßt so etwas aussehen?
Danke und Gruß Markus

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Berechtigung Arbeitsblätter
13.02.2008 17:03:13
fcs
Hallo markus,
etwa so im Blatt "Start" die Prozedur anpassen.
Gruß
Franz

Private Sub CommandButton1_Click()
Dim objWS As Worksheet
Dim rng As Range
Dim vSheets As Variant
Dim intIndex As Integer
Dim strPW As String
On Error Resume Next
If Me.ComboBox1.ListIndex > -1 Then
Application.ScreenUpdating = False
For Each objWS In Me.Parent.Worksheets
If objWS.Name  "Start" Then objWS.Visible = xlSheetVeryHidden
Next
Set rng = ThisWorkbook.Sheets("Master").Range("benutzer").Find(Me.ComboBox1.Text, LookAt:= _
xlWhole)
If Not rng Is Nothing Then
strPW = Crypto(rng.Offset(0, 1).Text, cKey)
If Me.TextBox1.Text = strPW Then
intCount = 0
rng.Offset(0, 3) = Now
If LCase(rng.Offset(0, 2).Text) = "alle" Then
For Each objWS In ThisWorkbook.Worksheets
objWS.Visible = xlSheetVisible
Next
Else
vSheets = Split(rng.Offset(0, 2), ",")
For intIndex = 0 To UBound(vSheets)
ThisWorkbook.Sheets(vSheets(intIndex)).Visible = xlSheetVisible
Next
ThisWorkbook.Sheets(vSheets(0)).Activate
End If
'####################### neu Anfang
Select Case Me.ComboBox1.Text
Case "admin", "Holger"
Call SpecialAdminHolger 'Special Procedur aufrufen
Case Else
'do nothing
End Select
'######################## neu Ende
Else
intCount = intCount + 1
If intCount  "Start" Then objWS.Visible = xlSheetVeryHidden
Next
With Me
.ComboBox1.Clear
.ComboBox1.Enabled = False
.TextBox1 = ""
.TextBox1.Enabled = False
.CommandButton1.Enabled = False
.CommandButton2.Enabled = False
End With
ThisWorkbook.Saved = True
Application.ScreenUpdating = True
End If
End If
End If
Me.TextBox1 = ""
Application.ScreenUpdating = True
End If
End Sub


Anzeige
AW: Berechtigung Arbeitsblätter
14.02.2008 13:37:38
markus473
Hallo Franz,
Danke funktioniert echt gut, kann man das Problem auch anderslösen?
Indem man zum Beispiel im Tabellenblatt Master eine Spalte Makro einfügt und bei jedem Mitarbeiter bei dem ein "X" eingetragen ist wird das Makro ausgeführt!
Gruß und Danke nochmal Markus

AW: Berechtigung Arbeitsblätter
14.02.2008 18:31:00
fcs
hallo Markus,
ja das geht auch. Man kann die bei der User-Suche gefunden Zelle auch dafür benutzen. Schaut dann etwa so aus:

'####################### neu Anfang
If LCase(rng.Offset(0, 4).Text) = "x" Then 'Spalte E auf x prüfen
Call specialprocedur 'Special Procedur aufrufen
Else
'do nothing
End If
'######################## neu Ende


Gruß
Franz

Anzeige
AW: Berechtigung Arbeitsblätter
14.02.2008 19:39:00
Markus473
Danke Franz,
wie hast du denn VBA gelernt?
habe ja nun schon etwas reingeschnuppert und kann ein Makro lesen, doch mit schreiben ist es etwas schwierig. Mit Makrorecorder geht es schon, aber da stößt man doch schnell an seine Grenzen. Gibt es auf diesem Gebiet auch Lehrgänge für Selbststudium? Habe mir bis jetzt auch immer (fast) alles selbst erarbeitet.
Für einen Tipp wäre ich dir dankbar.
Danke und Gruß Markus

AW: Berechtigung Arbeitsblätter
15.02.2008 10:16:08
markus473
Hallo Franz,
bekomme leider bei der Ausführung einen Kompilierungsfehler, habe dann ' vor Else gestzt, aber das Makro wird nicht ausgeführt!
Woran liegt das denn?
Gruß Markus
'####################### neu Anfang
If LCase(rng.Offset(0, 4).Text) = "x" Then 'Spalte E auf x prüfen
Call Leisten_ein 'Special Procedur aufrufen
Application.ScreenUpdating = True
'Else
'do nothing
End If
'######################## neu Ende

Anzeige
AW: Berechtigung Arbeitsblätter
15.02.2008 11:56:13
fcs
Hallo Markus,
ich hatte diese Variante in deiner Datei getestet, sie funktioniert.
Füge zum Testen mal ein paar Zeilen ein, damit du erkennst wo der Fehler evtl. steckt.

'####################### neu Anfang
If LCase(rng.Offset(0, 4).Text) = "x" Then 'Spalte E auf x prüfen
MsgBox """Leisten_ein"" wird jetzt ausgeführt!"
Call Leisten_ein 'Special Procedur aufrufen
Application.ScreenUpdating = True
Else
MsgBox """Leisten_Ein"" wird nicht ausgeführt!"
'do nothing
End If
'######################## neu Ende


Außerdem solltets du auf die If-Zeile einen Haltepunkt setzen und das Makro ohne VBA-Kennwortschutz starten. Ab dem Haltepunkt dann mit Taste F8 zeilenweise die Prozedur abarbeiten. Dann erkennst du exakt wann der Fehler auftritt.
Die Prozedur "Leisten_ein" muss du im gleichen Modul oder in einem allgemeinen Modul im VBA-Editor anlegen, damit es funktioniert.
Gruß
Franz

Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige