[英]Type mismatch Excel/Outlook vba
我想要的是要放入的宏:名字| 姓| 用戶名
我在調用userNameBuilder函數時遇到錯誤,即使它返回一個字符串並需要一個字符串
Dim firstName, lastName As String
Set sh = ActiveSheet
Dim counter = 0
For Each entry In exUser.GetDirectReports() 'exUser is an exchangeUser
counter = counter + 1
firstName = entry.GetExchangeUser.firstName
lastName = entry.getExchangeUser.lastName
sh.Cells(counter, 1).value = firstName
sh.Cells(counter, 2).value = lastName
sh.Cells(counter, 3).value = userNameBuilder(firstName, lastName)
Next
這是代碼抱怨的我的userNameBuilder函數。
當我注釋掉“ sh.Cells(counter,3).value = userNameBuilder(firstName,lastName)”時,代碼運行良好,只是不使用用戶名。
用戶名是姓氏的前5個字母加上名字的第一個字母。 如果姓氏太短,則僅將姓氏字符從頭開始填充,直到用戶名長度為6個字符為止。
Public Function userNameBuilder(ByVal firstName As String, ByVal lastName As String) As String
Dim newLastName As String
Dim newUserName As String
If (lastName >= 5) Then
newLastName = Left(lastName, Len(lastName) - 5)
userNameBuilder = (newLastName & Left(firstName, 1))
ElseIf (lastName < 5 && lastName > 0) Then
userNameBuilder = lastName & Left(firstName, 5 - (Len(lastName)))
Else
userNameBuilder = vbNullString
End If
End Function
代替
If (lastName >= 5) Then
你必須使用
If (Len(lastName) >= 5) Then
和喜歡
Public Function userNameBuilder(ByVal firstName As String, ByVal lastName As String) As String
Dim newLastName As String
Dim newUserName As String
If (Len(lastName) >= 5) Then
newLastName = Left(lastName, 5)
userNameBuilder = (newLastName & Left(firstName, 1))
ElseIf (Len(lastName) < 5 && Len(lastName) > 0) Then
userNameBuilder = lastName & Left(firstName, 5 - (Len(lastName)))
Else
userNameBuilder = vbNullString
End If
End Function
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.