gpt4 book ai didi

vba - 为什么 VBA 不能用 Word 和 Excel 中的 CRLF 替换函数

转载 作者:行者123 更新时间:2023-12-04 12:47:07 26 4
gpt4 key购买 nike

我可以发誓我过去已经剥离了 CRLF,但不确定为什么以下内容不起作用:

myString = "ABC" & vbCrLf & "DEF"
str1 = Replace(myString, vbLf, "")
str2 = Replace(str1, vbCrLf, "")
str3 = Replace(str2, vbNewLine, "")
MsgBox str3

上面的代码不起作用,结果是:

ABC
DEF

myString = "ABC" & vbCrLf & "DEF"
str1 = Replace(myString, Chr(13), "")
str2 = Replace(str1, Chr(10), "")
MsgBox str2

上面的代码确实有效,结果是:

ABCDEF

解决方案:感谢@Mat 的回答(第一个代码的问题是我尝试删除项目的顺序)VbCrLf & VbNewLine 是相同的,在删除 VbLf 后尝试删除组合 vbCr+VbLf 将不起作用

最佳答案

前提有缺陷:

myString = "ABC" & vbCrLf & "DEF"

字符串由“ABC”、vbCrLf 和“DEF”组成。

vbCrLfvbCrvbLf,在任何 Windows 机器上都是 vbNewLine

当你这样做时:

str1 = Replace(myString, vbLf, "")

您替换 vbLf 并保留 vbCr 字符

str2 = Replace(str1, vbCrLf, "")

然后您替换 vbCrLf 但是 vbLf 已经消失,所以 vbCrLf 不在字符串中

str3 = Replace(str2, vbNewLine, "") 

然后你替换 vbNewLine ,它基本上做与前面指令完全相同的事情,结果是一个字符串,它被剥离了 vbLf 但仍然包含 vbCr

此代码按预期工作:

Sub Test()
Dim foo As String
foo = "foo" & vbCrLf & "bar"
Debug.Print foo
foo = Replace(foo, vbNewLine, vbNullString)
Debug.Print foo
End Sub

这样做:

Sub Test()
Dim foo As String
foo = "foo" & vbNewLine & "bar"
Debug.Print foo
foo = Replace(foo, vbNewLine, vbNullString)
Debug.Print foo
End Sub

或者这个:

Sub Test()
Dim foo As String
foo = "foo" & vbNewLine & "bar"
Debug.Print foo
foo = Replace(foo, vbCrLf, vbNullString)
Debug.Print foo
End Sub

甚至这样:

Sub Test()
Dim foo As String
foo = "foo" & vbNewLine & "bar"
Debug.Print foo
foo = Replace(foo, vbCr, vbNullString)
foo = Replace(foo, vbLf, vbNullString)
Debug.Print foo
End Sub

您的第二个代码段按预期工作,因为您确实删除了 vbCr (Chr(13)) 和 vbLf (Chr(10)) 个字符。就这么简单。

关于vba - 为什么 VBA 不能用 Word 和 Excel 中的 CRLF 替换函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43876586/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com