Name + User?
Hallo,
was müsste ich hier anpassen? Ich komme mit der Fehler Meldung nicht zurecht.
Private Declare 36 GetUserName Lib "advapi32.dll" Alias "GetUserNameA" (ByVal lpBuffer As String, nSize As Long) As Long
Private Function GetNTUserA() As String
Dim sBuffer As String
Dim LSize As Long
Dim user As String
sBuffer = Space$(255)
LSize = Len(sBuffer)
Call GetUserName(sBuffer, LSize)
If LSize > 0 Then
user = Left$(sBuffer, LSize - 1)
Else
user = vbNullString
End If
GetNTUserA = user
End Function
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 6 Then
Target.Offset(0, 11).Value = Date
End If
If Target.Column = 6 Then
Target.Offset(0, 10).Value = GetNTUserA
End If
End Sub
2 Antworten
In vba kann man mir application.user oder so ähnlich ohne die Windows DLL den user erhalten.
Dann spart man sich auch die kompilier Optionen für Excel 64bit oder vba7.
Du musst Declare 36 durch Declare Function ersetzen. Außerdem musst du mit den Datentypen etwas herumspielen.
Folgender Code erzeugt zunächst keinen Fehler bei mir:
Private Declare PtrSafe Function GetUserName Lib "advapi32.dll" Alias "GetUserNameA" (ByVal lpBuffer As String, nSize As LongLong) As LongPtr
https://docs.microsoft.com/de-de/office/vba/language/reference/user-interface-help/ptrsafe-keyword
Datum Funktion geht.
Ich habe jetzt ein Problem mit den User Funktion.
Der Satz wird gelb markiert "Private Function GetNTUserA() As String"
Wie fern müsste ich etwas anpassen?
Private Function GetNTUserA() As String
Dim sBuffer As String
Dim LSize As Long
Dim user As String
sBuffer = Space$(255)
LSize = Len(sBuffer)
Call GetUserName(sBuffer, LSize)
If LSize > 0 Then
user = Left$(sBuffer, LSize - 1)
Else
user = vbNullString
End If
GetNTUserA = user
End Function