Makro nur für bestimmte Excel User ausführen
Schritt-für-Schritt-Anleitung
Um ein Makro in Excel nur für bestimmte User auszuführen, kannst Du den folgenden VBA-Code verwenden. Dieser überprüft den Benutzernamen und erlaubt nur den vorgegebenen Usern den Zugriff.
- Öffne Excel und gehe zu
Entwicklertools > Visual Basic.
- Füge ein neues Modul hinzu.
- Kopiere den folgenden VBA-Code in das Modul:
Private Declare Function GetUserName Lib "advapi32.dll" Alias "GetUserNameA" (ByVal lpBuffer As String, nSize As Long) As Long
Function Username() As String
Dim Buffer As String * 100
Dim BuffLen As Long
BuffLen = 100
GetUserName Buffer, BuffLen
Username = Left(Buffer, BuffLen)
Username = Left(Username, InStr(Username, Chr(0)) - 1)
End Function
Sub Test()
Select Case Username()
Case "Thomas.Maier", "Sandra.Weiler", "Tanja.Franzke", "Rene.Schweller"
MsgBox "Guten Tag " & Username()
Case Else
MsgBox Username() & " hat keine Berechtigung."
End Select
End Sub
- Schließe den VBA-Editor.
- Führe das Makro
Test aus.
Häufige Fehler und Lösungen
-
Fehler: "Argument nicht optional"
Dieser Fehler tritt auf, wenn Du versuchst, Unload Me in einem Modul zu verwenden, das kein UserForm ist. Verwende stattdessen Exit Sub oder eine andere Logik, um das Makro zu beenden.
-
Fehler: "Fehler beim Kompilieren: Unzulässige Verwendung des Schlüsselworts Me"
Stelle sicher, dass Du den Code in einem Modul und nicht in einer UserForm schreibst.
Alternative Methoden
Eine andere Möglichkeit, die Berechtigung für User zu überprüfen, ist die Verwendung von GoTo-Anweisungen. Hier ein Beispiel:
Sub Test()
If Username() <> "Thomas.Maier" Then GoTo Ende
If Username() <> "Sandra.Weiler" Then GoTo Ende
MsgBox "Zugriff gewährt."
Exit Sub
Ende:
MsgBox "Zugriff verweigert."
End Sub
Diese Methode ist einfacher, könnte aber schwer zu pflegen sein, wenn Du viele Benutzer hast.
Praktische Beispiele
Hier ist ein einfaches Beispiel, um das Konzept zu verdeutlichen:
Sub Beispiel()
If Username() <> "Tanja.Franzke" Then
MsgBox "Zugriff verweigert."
Exit Sub
End If
MsgBox "Willkommen, Tanja!"
End Sub
Führe das Makro aus, um zu sehen, wie es funktioniert. Du kannst die Namen anpassen, um verschiedene Benutzer zu testen.
Tipps für Profis
- Überlege, die Benutzernamen in einem Array zu speichern, um die Wartbarkeit zu verbessern.
- Verwende
Application.UserName, um den aktuell angemeldeten Excel-User zu ermitteln, falls Du keine API-Aufrufe machen möchtest.
- Teste den VBA-Code in der richtigen Excel-Version, um sicherzustellen, dass alle Funktionen unterstützt werden.
FAQ: Häufige Fragen
1. Kann ich mehrere User mit Bedingungen überprüfen?
Ja, Du kannst mehrere Bedingungen mit If ... Then oder mit Select Case wie im obigen Beispiel verwenden.
2. Wie kann ich den Usernamen automatisch abrufen?
Verwende die GetUserName-Funktion, um den aktuellen Windows-Benutzernamen zu erhalten.
3. Funktioniert das in allen Excel-Versionen?
Die meisten VBA-Funktionen sind in den neueren Excel-Versionen verfügbar, aber teste den Code in Deiner spezifischen Version.