2016-07-13 12 views
-2

私はまだVBAはあまりよくありません。 If NamePart =で始まり、=記号が強調表示されている行を指すタイトルのエラーが表示されます。誰でも知っている理由は?VBA:タイプの不一致

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 

答えて

2

NamePartあなたはおそらく列挙型でいずれかの項目がいくつかの値と等しい場合はお聞きしたいの比較のためにそれを使用することを意味列挙型、です。

If part = NamePart.EnvironmentDefined Then 

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 

あなたはNamePart.を打つすべての列挙型のオプションが表示されていることに注意してください。

+1

ありがとうございます! – whatwhatwhat

+1

また、 'Select Case NamePart'は'ケース選択部 'でなければなりません。 –

+0

@ Mat'sMug true、edited。 – Brad

関連する問題