Excel VBA - 字符串填充不起作用

Excel VBA - String padding not working

我有一个 VBA 函数,returns 有很多关于它 运行 所在计算机的信息。我想整齐地格式化输出,标题 left-justified 和结果都在右边整齐的一行上标记。

这是我认为可行的方法,这是我咨询过的许多网站上的解决方案:

AllInfo = _
    "Date/Time Opened:" & Space(33 - Len("Date/Time Opened:")) & Now() & vbCrLf & _
    "Filename:" & Space(33 - Len("Filename:")) & Application.ActiveWorkbook.Name & vbCrLf & _
    "Name in Cell B2:" & Space(33 - Len("Name in Cell B2:")) & Cells(2, 2).Value & vbCrLf & _

但是消息框和电子邮件 body 中的输出是参差不齐的。当然,标题都排在左边,但结果排得不太好。

谁能看出我做错了什么?

您在计算要添加的空格数时未包括字符串变量。

AllInfo = _
    "Date/Time Opened:" & Space(33 - Len("Date/Time Opened:" & Now())) & Now() & vbLf & _
    "Filename:" & Space(33 - Len("Filename:" & Application.ActiveWorkbook.Name)) & Application.ActiveWorkbook.Name & vbLf & _
    "Name in Cell B2:" & Space(33 - Len("Name in Cell B2:" & Cells(2, 2).Value)) & Cells(2, 2).Value & vbLf & _
    (etc)

我也把你的vbCRLF改成了vbLF;这可能正确也可能不正确。

这个有效:

Sub djfsdf()
    allinfo = _
        "Date/Time Opened:" & Space(33 - Len("Date/Time Opened:")) & Now() & vbCrLf & _
        "Filename:" & Space(33 - Len("Filename:")) & Application.ActiveWorkbook.Name & vbCrLf & _
        "Name in Cell B2:" & Space(33 - Len("Name in Cell B2:")) & Cells(2, 2).Value
    Cells(3, 3) = allinfo


End Sub

使用正确的字体: