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

Ich brauche eure Hilfe!

Ich brauche eure Hilfe!
08.03.2017 14:16:14
Mando
Guten Tag,
ich möchte eine Tabelle erstellen, wo ich bestimmte User lediglich für die bestimmte Zeile und bestimmten Range die Freigabe erteile etwas zu schreiben.
Ich kriege aber andauernd ein Fehler und kriege das nicht hin.
Ich hab folgendes aus dem netz gefunden und versucht so umzuwandeln, dass es zu mir passt.
Wo liegt hier der Fehler?

Sub rechte()
Dim B As String * 100
Dim L As Long
L = 100
GetUserName B, L
Dim maanzahl As Integer
Dim ma As Variant
maanzahl = 3 'mitarbeiteranzahl anpassen
ma = Array("a00000", "5", _
"a01614", "7", _
"a13089", "6") 'MitarbeiterID,Spalte die freigeschaltet werden muss
'(würde sich auch noch automatisieren lassen)
'damit das Makro im PW-geschütztem Blatt läuft
Sheets("tabelle1").Protect (["test"]), userinterfaceonly:=True
'tharmen ist Chef , eventuell weitere userid dem Chef gleichberechtigen ;-)
If Left(B, L - 1) = "a11687" Or Left(B, L - 1) = "weitereChefuserId" Then
Sheets("tabelle1").Visible = 1 'Blatt sichtbar schalten
Sheets("tabelle1").Unprotect (["test"]) 'Blattschutz weg
Sheets("tabelle1").Activate 'Blatt aktiv setzen
Else
Sheets("tabelle1").Visible = 2
'hier werden einzelne Bereiche freigeschaltet
'- leider nicht gerade schön,
' da man für jeden User eine abfrage machen muss
' mein Wissen reicht zu mehr nicht aus
For x = 0 To (maanzahl - 1) * 2 Step 2
If Left(B, L - 1) = ma(x) Then 'mitarbeiter X aus ma(array) holen
Sheets("tabelle1").Visible = 1 'Blatt sichtbar schalten
Row = ma(x + 1) 'spalte aus ma(array) holen
Row1 = "C:" & Row & "f:" & Row  'zusammenbau des Rangebereich - bsp."C6:F6"
Sheets("tabelle1").Range(Row1).Locked = False 'Zellbereich zum beschreiben freigeben
Sheets("tabelle1").Activate 'Blatt aktiv setzen
End If
Next x
End If
End Sub 'wennn man nicht will das man mit alt & F11 das Makro sieht
'unter tools, eigenschaften den Schutz einschalten
Hier die Datei
https://www.herber.de/bbs/user/112039.xlsm  _
_
_
_
a>


		

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Ich brauche eure Hilfe!
09.03.2017 00:27:53
onur
Was für fehler in welcher zeile denn?
AW: Ich brauche eure Hilfe!
09.03.2017 09:26:30
Mando
Hallo,
den Fehler habe ich gefunden. Lag hier ran:
Row1 = "C" & Row & ":f" & Row 'Doppelpunkt an falsche stelle gesetzt
Sheets("tabelle1").Range(Row1).Locked = False
Doch nun habe ich lediglich die Spalte A+B gesperrt und ab da kann ich überall schreiben. Wo liegt der Fehler?
Das ist der Originalcode welches aber lediglich die Freigabe für die Spalte erteilt, doch ich möchte nicht die spalte sondern die Zeile. Also anstatt "a" oder "b" soll "1" oder "2" freigegeben werden.
Declare

Function GetUserName Lib "advapi32.dll" _
Alias "GetUserNameA" (ByVal lpBuffer As String, _
nSize As Long) As Long

Sub rechte()
Dim B As String * 100
Dim L As Long
L = 100
GetUserName B, L
Dim maanzahl As Integer
Dim ma As Variant
maanzahl = 11 'mitarbeiteranzahl anpassen
ma = Array("THARMEN", "D", _
"masc503", "E", _
"a13089", "F", _
"Mitarbeiter 4", "G", _
"Mitarbeiter 5", "H", _
"Mitarbeiter 6", "I", _
"Mitarbeiter 7", "J", _
"Mitarbeiter 8", "K", _
"Mitarbeiter 9", "L", _
"Mitarbeiter 10", "M", _
"Thomas", "N") 'MitarbeiterID,Spalte die freigeschaltet werden muss
'(würde sich auch noch automatisieren lassen)
'damit das Makro im PW-geschütztem Blatt läuft
Sheets("2005").Protect (["test"]), userinterfaceonly:=True
'tharmen ist Chef , eventuell weitere userid dem Chef gleichberechtigen ;-)
If Left(B, L - 1) = "a11687" Or Left(B, L - 1) = "weitereChefuserId" Then
Sheets("2005").Visible = 1 'Blatt sichtbar schalten
Sheets("2005").Unprotect (["test"]) 'Blattschutz weg
Sheets("2005").Activate 'Blatt aktiv setzen
Else
Sheets("2005").Visible = 2
'hier werden einzelne Bereiche freigeschaltet
'- leider nicht gerade schön,
' da man für jeden User eine abfrage machen muss
' mein Wissen reicht zu mehr nicht aus
For x = 0 To (maanzahl - 1) * 2 Step 2
If Left(B, L - 1) = ma(x) Then 'mitarbeiter X aus ma(array) holen
Sheets("2005").Visible = 1 'Blatt sichtbar schalten
sp = ma(x + 1) 'spalte aus ma(array) holen
sp1 = sp & "3:" & sp & "369" 'zusammenbau des Rangebereich - bsp."D3:D369"
Sheets("2005").Range(sp1).Locked = False 'Zellbereich zum beschreiben freigeben
Sheets("2005").Activate 'Blatt aktiv setzen
End If
Next x
End If
End 

Sub 'wennn man nicht will das man mit alt & F11 das Makro sieht
'unter tools, eigenschaften den Schutz einschalten

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige