Makro umschreiben
06.04.2022 09:37:50
MoneWa
ich bin neu hier und bräuchte mal Hilfe beim umschreiben eines Makros. Es wurde durch jemand anderen programmiert und ich hab leider keine Ahnung davon... kann es nicht richtig lesen/ändern. Aber ich denke für Euch ein Kinderspiel.
Es geht darum, dass in einer bestimmten Spalte (hier: AL = 38. Spalte) nur der User etwas schreiben kann, der in Zeile 3, Spalte AL mit Username vorgegeben wurde.
Aktuell läuft das Makro über mehrere Spalten hinweg (AL-AX = 38-50), sodass mehrere User vorgegeben werden können - aber ich brauche es eben nur für die eine Spalte.
Hier die aktuelle Programmierung:
' ab hier USERID lesen und Zellen sperren / entsperren für die Kommentierung
Sheets("Master").Select
Dim KeyCells As Range
Dim USERID As String
Dim C, A As Integer
Dim Spalte As Long
Dim USERID_CHECK, ADMINID_CHECK As String
USERID = Environ("Username") ' UserID auslesen und in Var speichern
ActiveSheet.Cells.ClearOutline
ActiveSheet.Columns("W:AI").Columns.Group
ActiveSheet.Columns("W:AI").Columns.Hidden = False
For C = 38 To 50 ' = Spalten 38-50 = AL-AX
USERID_CHECK = Cells(3, C) ' AL3 = R3 C38
If USERID_CHECK = USERID Then
Application.ScreenUpdating = False
ActiveSheet.Range(Cells(8, C), Cells(300, C)).Select
Selection.Locked = False
ActiveSheet.Cells(3, C).Select
ActiveSheet.Cells(3, C).Interior.ColorIndex = 49
ActiveSheet.Cells(3, C).Font.ColorIndex = 2
Application.ScreenUpdating = True
MsgBox USERID_CHECK & Chr(13) & Chr(10) & "für Kommentierung freigeschaltet.", , "Benutzer erkannt"
Else
Application.ScreenUpdating = False
ActiveSheet.Range(Cells(8, C), Cells(300, C)).Select
Selection.Locked = True
ActiveSheet.Cells(3, C).Interior.ColorIndex = 15
ActiveSheet.Cells(3, C).Font.ColorIndex = 16
Spalte = C
ActiveSheet.Range(ActiveSheet.Columns(C), ActiveSheet.Columns(C)).Group
Application.ScreenUpdating = True
End If
Next C
' ab hier Freischalten der ADMIN-Zellen
' (zur Änderung der Bearbeiter in Zeile 9, Blatt Master)
Worksheets("Master").Range(Cells(3, 38), Cells(3, 50)).Select
Selection.Locked = True
Und außerdem können nur User, die im Reiter "Admin" eingetragen sind, die User im Reiter "Master" erfassen, die in den durch das Makro geschützten Spalten etwas eintragen können. Auch dies soll auf die eine Spalte AL reduziert werden, d.h. alle User, die im Reiter "Admin" eingetragen sind können den einen User in Zeile 3, Spalte AL festlegen. Die weiteren Spalten sollen offen sein.Hier die aktuelle Programmierung:
For A = 5 To 100 ' = Zeilen 5 bis 100 im Blatt ADMIN (da stehen die IDs)
ADMINID_CHECK = Worksheets("ADMIN").Cells(A, 2) ' B5:B100 = R5C2:R100C2
If ADMINID_CHECK = USERID Then
Application.ScreenUpdating = False
Worksheets("Master").Range(Cells(3, 38), Cells(3, 50)).Select
Selection.Locked = False
ActiveSheet.Range(Cells(3, 38), Cells(3, 50)).Interior.ColorIndex = 10
ActiveSheet.Range(Cells(3, 38), Cells(3, 50)).Font.ColorIndex = 2
Application.ScreenUpdating = True
ActiveSheet.Range("D9").Select
MsgBox ADMINID_CHECK & Chr(13) & Chr(10) & "zur Pflege der Bearbeiter freigeschaltet.", , "Admin erkannt"
Else
End If
Next A
Worksheets("Master").Select
ActiveSheet.Range("D9").Select
Application.Calculation = xlCalculationAutomatic
Application.EnableEvents = True
End Sub
DANKE schonmal!!!