赏金问题:
虽然有一个答案提供了合理的解释,但我想确定字符串的截断是否发生,因为Clean()是a WorksheetFunction和该问题背后的原因.做WorksheetFunctions时调用由VBA传递字符串为"细胞"可以这么说这在截断null Chr(0)?
原始问题:
为什么TestIt的Application.Clean方法删除所有字符后,Chr(0)即使它们是可打印? TestIt2在替换后正确返回8个字符null Chr(0).
编辑:
值得注意的是,某些版本的Excel将要求您编写 Application.WorksheetFunction.Clean()
以测试此错误.
码
Sub TestIt()
Dim TryIt As String
TryIt = "Test" & Chr(0) & "asdf"
MsgBox Len(TryIt) 'Prints 9
TryIt = Application.Clean(TryIt)
MsgBox Len(TryIt) 'Prints 4
End Sub
Run Code Online (Sandbox Code Playgroud)
和
Sub TestIt2()
Dim TryIt As String
TryIt = "Test" & Chr(0) & "asdf"
MsgBox Len(TryIt) 'Prints 9
TryIt = Replace(TryIt, Chr(0), "") …Run Code Online (Sandbox Code Playgroud)