2016-07-13 13 views
-2

Ich bin nicht besonders gut in VBA noch. Ich erhalte den Fehler in dem Titel, der auf die Zeile zeigt, die mit If NamePart = beginnt, und es markiert das = Zeichen. Wer weiß warum?VBA: Typ Mismatch

Public Enum NamePart 
    EnvironmentDefined 
    FullName 
    FirstName 
    LastName 
End Enum 

Public Function GetUser(Optional ByVal part As NamePart = EnvironmentDefined) As String 

    Dim result As String 
    Dim sysInfo As Object 
    Dim userInfo As Object 

    If NamePart = EnvironmentDefined Then 
     GetUser = Environ$("USERNAME") 
     Exit Function 
    End If 

    Set sysInfo = CreateObject("ADSystemInfo") 
    Set userInfo = GetObject("LDAP://" & sysInfo.UserName) 
    Select Case NamePart 
     Case FullName 
      result = userInfo.FullName 
     Case FirstName 
      result = userInfo.GivenName 
     Case LastName 
      result = userInfo.LastName 
     Case Else 
      result = Environ$("USERNAME") 
    End Select 

    GetUser = result 

End Function 

Private Sub Command363_Click() 

    Call GetUser 
    MsgBox "Username: " & GetUser 

End Sub 

Antwort

2

NamePart ist eine Enumeration, die es für den Vergleich zu verwenden bedeutet, dass Sie wahrscheinlich, wenn ein Punkt ist zu einem gewissen Wert, der gleich in der Enum mögen fragen.

If part = NamePart.EnvironmentDefined Then 

auch

Select Case part 
    Case NamePart.FullName 
     result = userInfo.FullName 
    Case NamePart.FirstName 
     result = userInfo.GivenName 
    Case NamePart.LastName 
     result = userInfo.LastName 
    Case Else 
     result = Environ$("USERNAME") 
End Select 

Beachten Sie, dass, wenn Sie . nach NamePart treffen alle Enum Optionen angezeigt.

+1

Danke Sir !! – whatwhatwhat

+1

Auch 'Select Case NamePart' sollte' Select Case part' sein. –

+0

@ Mat'sMug true, editiert. – Brad

Verwandte Themen