Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Environ("Username") in Variable

Environ("Username") in Variable
23.05.2013 18:15:26
Bubble
Hallo Exelperten,
mit
Sub namen_ermitteln()
MsgBox (Environ("Username"))
End Sub

erhalte ich in Exel 2007 den Anmeldenamen des Users, der die Arbeitsmappe öffnet. Nun wollte ich das ganze etwas abändern und erreichen das bei einem bestimmten Anmeldenamen ein Begrüßungstext in der MsgBox steht. Versucht habe ich das mit
Private Sub Workbook_Open()
'autostart beim öffnen der Exelmappe
Dim strName As String
strName = Environ("Username").Value
If strName = "mustermann" Then
MsgBox "Hallo Max, viel Spaß bei der Arbeit", vbExclamation, "Begrüßung"
Else
MsgBox "Hallo, Dich kenne ich nicht!", vbExclamation, "Begrüßung"
End If
End Sub

Momentan bekomme ich dieser Variante immer einen Laufzeitfehler 425 (Objekt erforderlich), wenn ich dann auf Debuggen gehe, wird
strName = Environ("Username").Value

gelb hinterlegt. Da ich VBA nur aus dem Makrorecorder kenne, habe ich über die Hilfe versucht mir das selbst zusammen zu bauen. In der Zeile mit Dim am Anfang glaube ich strName als Variable mit Textinhalt zu definieren und in der gelb hinterlegten Zeile weise ich der Variablen einen Wert zu, nämlich den Inhalt von Environ("Username"). Achso und das ganze steht unter "Diese Arbeitsmappe", damit es automatisch beim start ausgeführt wird.
Wo liegt der oder die Fehler?
Gruß
Bubble

Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Environ("Username") in Variable
23.05.2013 18:16:26
Hajo_Zi
warum Value?

AW: Environ("Username") in Variable
23.05.2013 18:52:26
Matze
Hallo Zusammen,
..na Hajo, ob Ihm das weiterhilft?
@ Bubble ?
War mal irgendwo hier im Forum, eine Lösung mit Array
In diese Arbeitsmappe einfügen:
Option Explicit
Private Sub Workbook_Open()
Dim Berechtigt()
Berechtigt = Array("Otto", "Herbert", "Ede", "Mustermann")
If Not IsError(Application.Match(Environ("Username"), Berechtigt, 0)) Then
MsgBox "Sie Sind berechtigt - viel Spaß !"
Else
MsgBox "SKeine Berechtigung ! - Mappe ohne speichern schliessen!", , " Keine  _
Berechtigung!"
ThisWorkbook.Close False
End If
End Sub
Matze

Anzeige
WICHTIG vergessen,...
23.05.2013 19:02:32
Matze
Hallo Bubble ,
dein Anmeldename sollte auf Jedenfall da sein, sonst hast du keine Chance da wieder ran zu kommen.
Oder , Frage an die Profis, geht das doch noch, wenn im Array der Username nicht dabei ist, die Datei zu öffnen?
Ich empfehle die Datei auch mit einem Passwort zu speichern
"Speichern unter " Allgemeine Optionen,....
Matze

Anzeige
AW: WICHTIG vergessen,...
24.05.2013 09:00:45
Klaus
Oder , Frage an die Profis, geht das doch noch, wenn im Array der Username nicht dabei ist, die Datei zu öffnen?
Hallo Matze,
klar geht das dann noch. Einfach ohne Makros öffnen.
Grüße,
Klaus M.vdT.

AW: Environ("Username") in Variable
23.05.2013 19:07:07
Bubble
@Matze Es geht nicht darum jemanden auszusperren, mit der Mappe arbeiten eh nur 3 Leute und nun bin ich das ganze schon am erweitern mit elseif um jedem der Drei eine personalisierte Begrüßung zu geben.
Aber ich habe mir den Code mal gespeichert, ist ja eine primitive Zugangskontrolle, so lang makros aktiviert und geladen werden.

Anzeige
AW: Environ("Username") in Variable
23.05.2013 18:59:28
Bubble
Ähm, ja, hmmmm, also, naja, ..., so genau weis ich das auch nicht, dachte .value gehört zu der Definition dazu.
Wie gesagt ich kenne VBA nur aus dem Makrorecorder, der VBA-F1 Hilfe und bissi Goggle und viel Herber Forum. Aber so ist glaub ich Learning by Doing und dank Euch ganzen netten Forumsusern kommt man auch aus Sackgassen wieder raus.
Jetzt, da ich das .Value entfernt habe, funktioniert das Makro einwandfrei.
Vielen Dank Hajo
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Environ("Username") in VBA nutzen


Schritt-für-Schritt-Anleitung

Um den Benutzernamen des aktuellen Anwenders in Excel über VBA zu ermitteln, kannst du die Funktion Environ("Username") verwenden. Hier ist eine einfache Schritt-für-Schritt-Anleitung:

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu starten.

  2. Wähle im Menü Einfügen die Option Modul, um ein neues Modul zu erstellen.

  3. Füge den folgenden Code in das Modul ein:

    Sub namen_ermitteln()
       MsgBox (Environ("Username"))
    End Sub
  4. Schließe den VBA-Editor und gehe zurück zu Excel.

  5. Drücke ALT + F8, wähle namen_ermitteln aus und klicke auf Ausführen.

Damit erhältst du eine MsgBox, die den Anmeldenamen des Users anzeigt.


Häufige Fehler und Lösungen

Ein häufiger Fehler, der bei der Verwendung von Environ auftreten kann, ist ein Laufzeitfehler, z.B. Fehler 425. Dies geschieht oft, wenn .Value fälschlicherweise verwendet wird. Hier ist eine Lösung:

  • Fehler: strName = Environ("Username").Value
  • Lösung: Entferne .Value. Der korrekte Code sollte so aussehen:

    strName = Environ("Username")

Alternative Methoden

Es gibt verschiedene Möglichkeiten, den Benutzernamen in VBA zu verwenden:

  1. Mit einem Array: Wenn du mehrere Benutzer mit verschiedenen Nachrichten ansprechen möchtest, kannst du ein Array verwenden:

    Private Sub Workbook_Open()
       Dim Berechtigt()
       Berechtigt = Array("Otto", "Herbert", "Ede", "Mustermann")
       If Not IsError(Application.Match(Environ("Username"), Berechtigt, 0)) Then
           MsgBox "Sie Sind berechtigt - viel Spaß !"
       Else
           MsgBox "Keine Berechtigung! - Mappe ohne speichern schließen!", , "Keine Berechtigung!"
           ThisWorkbook.Close False
       End If
    End Sub
  2. Mit VBA Application: Du kannst auch Application.Username verwenden, um den Namen des Benutzers zu bekommen, der in Excel eingestellt ist:

    MsgBox Application.Username

Praktische Beispiele

Hier sind einige praktische Beispiele zur Verwendung von Environ in VBA:

  1. Begrüßung basierend auf dem Benutzernamen:

    Private Sub Workbook_Open()
       Dim strName As String
       strName = Environ("Username")
       If strName = "mustermann" Then
           MsgBox "Hallo Max, viel Spaß bei der Arbeit", vbExclamation, "Begrüßung"
       Else
           MsgBox "Hallo, Dich kenne ich nicht!", vbExclamation, "Begrüßung"
       End If
    End Sub
  2. Anzeige von Benutzerinformationen:

    Sub BenutzerInfo()
       MsgBox "Der aktuelle Benutzer ist: " & Environ("Username")
    End Sub

Tipps für Profis

  • Sicherheit: Wenn du mit sensiblen Daten arbeitest, erwäge, die Datei mit einem Passwort zu schützen. Dies kannst du unter Speichern unter > Allgemeine Optionen einstellen.
  • Fehlerbehandlung: Füge Fehlerbehandlungsroutinen hinzu, um besser mit unerwarteten Situationen umzugehen.
  • Optimierung: Vermeide unnötige Berechnungen in deinem Code, indem du nur die benötigten Daten abfragst.

FAQ: Häufige Fragen

1. Warum funktioniert Environ("Username").Value nicht?
Value ist überflüssig, da Environ bereits einen String zurückgibt. Verwende einfach Environ("Username").

2. Kann ich Environ auch in Excel Online verwenden?
Nein, Environ ist eine VBA-Funktion und funktioniert nur in der Desktop-Version von Excel.

3. Wie kann ich sicherstellen, dass mein Code beim Öffnen der Arbeitsmappe ausgeführt wird?
Plaziere deinen Code im Workbook_Open()-Ereignis im VBA-Editor unter Diese Arbeitsmappe.

4. Kann ich Environ für andere Umgebungsvariablen verwenden?
Ja, du kannst Environ auch für andere Variablen verwenden, wie z.B. Environ("TEMP") oder Environ("APPDATA").

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige