📜  vba 删除最后一个 vbcrlf - VBA (1)

📅  最后修改于: 2023-12-03 15:05:48.258000             🧑  作者: Mango

VBA 删除最后一个 vbCrLf

在 VBA 开发中,有时我们需要从一个字符串中删除最后一个换行符 vbCrLf (即 vbCrLf 表示一个 Windows 平台下的文本文件换行符,即回车符 CR 和换行符 LF 的组合)。如果是普通的字符串,我们可以使用 VBA.Strings.Right() 函数来删除最后一个字符,但是 vbCrLf 不是一个普通的字符,因此需要一些特殊操作来删除它。

可能你会认为仅仅删掉最后两个字符就可以了,但是在某些情况下,这个字符串的最后两个字符可能不一定是 vbCrLf,因此需要一些判断和特殊处理。

以下是一个用 VBA 移除字符串最后一个 vbCrLf 的例子:

Function RemoveLastVBCrLf(ByVal s As String) As String
    Dim lenS As Long
    Dim lastChar As String
    
    lenS = Len(s)
    lastChar = Right(s, 1)
    
    If lastChar = vbCr Or lastChar = vbLf Then
        s = Left(s, lenS - 1)
        lenS = lenS - 1
        lastChar = Right(s, 1)
    End If
    
    If lastChar = vbCr Or lastChar = vbLf Then
        s = Left(s, lenS - 1)
    End If
    
    RemoveLastVBCrLf = s
End Function

这个函数首先获取输入字符串的长度 lenS,然后获取字符串的最后一个字符 lastChar。如果最后一个字符是 vbCrLf 中的任意一个,就将字符串长度减一,并重新获取最后一个字符。如果新得到的最后一个字符是 vbCrLf 中的任意一个,再重复上述步骤。

最后返回移除后的字符串。

这个函数可以通过以下方式使用:

s = "Hello world!" & vbCrLf
s = RemoveLastVBCrLf(s)
Debug.Print s ' 输出 "Hello world!"

注意我们在这个例子中将字符串 s 的最后一个字符设置为 vbCrLf,这是为了演示该函数的用法,实际上使用该函数时,不一定要输入这样的字符串。