【问题标题】:Excel VBA Print adds new lineExcel VBA Print 添加新行
【发布时间】:2019-12-27 08:39:56
【问题描述】:

几个月前,我为我的公司编写了一个小型 Makro,直到现在它运行良好。 最近(可能是因为我们更新了Office版本)有一个bug,excel在打印语句中添加了一个新行。

代码:

outputString = value1 & "                  " & value2 & "                  " & value3 & "                  " & value4 & "               " & value5 & "                 " & user & "                  " & date 

曾经给我这个输出:

22 S ***/***s                     9932256                     B*****t                                         Fatma                                        811                 R******r Alexander                 27.12.2019

现在给我这个输出:

22 S ***/***s                     9932256                     B*****t                                         Fatma                                        811                 R******r Alexander                 
                   27.12.2019

如您所见,excel 添加了换行符。

谁能告诉我这里发生了什么?

编辑:

解决方案:

Excel使用后添加新行:

用户 = 应用程序.用户名

这可能是由于我们进行了办公室更新。所以我只取了子字符串并剪切了最后一个字符,现在可以正常工作了。

【问题讨论】:

  • outputString 的 len 是多少?你如何定义新行? outputString中有vbCrLfvbLf吗?您显示的输出来自哪个输出设备?另请出示您用于打印outputString的声明。
  • 不,我什么都不用。字符串的长度也不是问题。当然,这些是我检查的第一件事。 Excel 在 Application.UserName 之后添加了一个新行,你知道我如何删除新行吗??
  • 然后问题又来了:你如何定义新行? Application.Username 返回一个结尾没有vbCrLfvbLf 的字符串。所以,我不认为Replace(user,vbLf,"")Replace(user,vbCrLf,"") 会帮助你,但你可以试一试。老实说,我觉得无视我的问题有点冒犯。
  • 对不起,我有点生气,因为在我看来这是一个愚蠢的问题。我找到了解决方案:(可能是因为 Office 更新)Application.UserName 函数现在在末尾添加了一个新行。所以我拿了子串并剪切了新行。现在工作正常。非常感谢您的帮助,再次抱歉
  • 如果您找到了解决方案,最好分享修复程序,以便其他人可以避免此类错误。我认为Application.UserName 不会添加新行,即 vbCrlf 或 vbLf。什么是您的新产品线?

标签: excel vba printing


【解决方案1】:

Application.Username 返回文档中声明的用户名。因为它是Read/write,所以您确实会得到一个包含vbLfvbCrLf 的用户名。看看下面的例子

Sub UserName_VbCrlf()
    Dim origUser As String
    Dim user As String

    ' Be careful when testing as it replaces your username!!
    ' Maybe you save it first
    origUser = Application.UserName

    Application.UserName = "Storax" & vbLf & "Home adress"
    user = Application.UserName

    ' This will give different lengths
    Debug.Print Len(user), Len(Replace(user, vbLf, ""))

    ' Restore original username
    Application.UserName = origUser

End Sub

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多