【问题标题】:Type mismatch Excel/Outlook vba类型不匹配 Excel/Outlook vba
【发布时间】:2016-10-12 02:15:45
【问题描述】:

我想要的是放置宏:名字 |姓氏 |用户名

调用 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

【问题讨论】:

  • 这可能与您的问题无关,但 “姓氏的前 5 个字母” 将是 newLastName = Left(lastName,5)
  • 哦对了

标签: vba excel outlook


【解决方案1】:

而不是

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-28
    • 1970-01-01
    • 2017-04-12
    相关资源
    最近更新 更多