3.9k Aufrufe
Gefragt in Tabellenkalkulation von
Guten Morgen,
ich habe in meiner Excel-Datei einen Button der ein Makro ausführt. Gibt es eine Möglichkeit diesen Button unsichtbar zu machen, sodass nur bestimmte Leuten den Button sehen und betätigen können?

Greetz Chris

5 Antworten

0 Punkte
Beantwortet von hajo_zi Experte (9.1k Punkte)
Hallo Chris,

Ja die möglichkeit gibbt es.
Environ("Username")="Chris"
Ist nur die Frage was für Button.

Gruß Hajo
0 Punkte
Beantwortet von
Hi Hajo,
der Button ist eine Befehlsschaltfläche. Wenn man ihn klickt werden Daten aus dieser Datei in eine andere kopiert.
Hatte das mal selber ausprobiert, jedoch irgendwelche Fehler dabei gemacht. Oder vllt war mein Gedanke bzw der Code einfach nur falsch.

Private Sub CommandButton1_Click()

If UserName.R885897 = False Then
Button.Enable = False

End If


hatte davor diese Makro in ein neues Modul eingefügt

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

Sub UserName()
Dim B As String * 100
Dim L As Long
L = 100
GetUserName B, L
MsgBox Left(B, L - 1)
End Sub


R885897 ist mein Benutzername. Ich weiss jetzt leider nicht wie ich es richtig in den Code einsetze.

Greetz Chris
0 Punkte
Beantwortet von hajo_zi Experte (9.1k Punkte)
Hallo Chris,

Excel hat 2 unterschiedliche Button.
Ich hätte es unter DieseArbeitsmappe gemacht.


Private Sub Workbook_Open()
Worksheets("Tabelle3").CommandButton1.Visible = Environ("Username") = "Hajo_Zi"
End Sub


Gruß Hajo
0 Punkte
Beantwortet von
Quasi jetzt dieses Modul
Declare Function GetUserName Lib "advapi32.dll" _
Alias "GetUserNameA" (ByVal lpBuffer As String, _
nSize As Long) As Long

Sub UserName()
Dim B As String * 100
Dim L As Long
L = 100
GetUserName B, L
MsgBox Left(B, L - 1)
End Sub


durch das



Private Sub Workbook_Open()
Worksheets("Tabelle3").CommandButton1.Visible = Environ("Username") = "R885897"
End Sub


ersetzen?
Sry steh grad etwas aufm Schlau ;)


Der Anfang meines eigtl Codes sieht ja eigtl so aus

Private Sub CommandButton1_Click()


Dim lngLast As Long

If Trim(Range("G61").Value) = "" Or Trim(Range("I77").Value) = "" Then 'Zellen für Pflichtfelder <Datum> und <Aufmaß-Nr>
MsgBox "Die Zellen 'Datum' und 'Aufmaß-Nr' müssen ausgefüllt werden.", vbOKOnly, "Fehler" 'Message Box

Else


'Regionalzentrum
ThisWorkbook.Worksheets("Aufmaßanfrage").Range("L15").Copy
lngLast = Workbooks("Aufmassdatei.xls").Worksheets("Aufmassdatei").Cells(Rows.Count, "A").End(xlUp).Row + 1
Workbooks("Aufmassdatei.xls").Worksheets("Aufmassdatei").Range("Q" & lngLast).PasteSpecial Paste:=xlPasteValues


Muss ich da nichts mehr dran verändern?
Übrigens vielen Dank für die schnelle Hilfe Hajo :)

Greetz Chris
0 Punkte
Beantwortet von
Problem gelöst mit deinem Code Hajo ;)

Danke nochmal.

Greetz Chris
...