簡體   English   中英

類型不匹配的Excel / Outlook vba

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM