Vba 返回空字符串的递归函数

Vba 返回空字符串的递归函数,vba,recursion,Vba,Recursion,如何正确退出递归函数并在VBA中返回值 我有一个简单的代码可以从字符串中删除多个空格: 公共函数将多个空间(作为字符串)移除为字符串 如果InStr(1,s,“,vbTextCompare)>0,则 模糊的新闻 新闻=替换 删除多个位置(新闻) 其他的 移除多个空间=s 终止 如果结束 端函数 但根据退出End或exit Function时使用的方法,我要么没有返回任何内容,要么得到一个空字符串。正确的递归函数不需要特定的退出条件。只要停止递归调用函数,它就会退出 但是,如果要显式退出,可以使

如何正确退出递归函数并在VBA中返回值

我有一个简单的代码可以从字符串中删除多个空格:

公共函数将多个空间(作为字符串)移除为字符串
如果InStr(1,s,“,vbTextCompare)>0,则
模糊的新闻
新闻=替换
删除多个位置(新闻)
其他的
移除多个空间=s
终止
如果结束
端函数

但根据退出
End
exit Function
时使用的方法,我要么没有返回任何内容,要么得到一个空字符串。

正确的递归函数不需要特定的退出条件。只要停止递归调用函数,它就会退出

但是,如果要显式退出,可以使用
退出功能

然而,您的错误是,当您进行递归调用时,您需要返回递归调用的结果

公共函数将多个空间(作为字符串)移除为字符串
如果InStr(1,s,“,vbTextCompare)>0,则
模糊的新闻
新闻=替换
RemoveMultipleSpaces=RemoveMultipleSpaces(新闻)
其他的
移除多个空间=s
如果结束
端函数

正确的递归函数不需要特定的退出条件。只要停止递归调用函数,它就会退出

但是,如果要显式退出,可以使用
退出功能

然而,您的错误是,当您进行递归调用时,您需要返回递归调用的结果

公共函数将多个空间(作为字符串)移除为字符串
如果InStr(1,s,“,vbTextCompare)>0,则
模糊的新闻
新闻=替换
RemoveMultipleSpaces=RemoveMultipleSpaces(新闻)
其他的
移除多个空间=s
如果结束
端函数

您的代码修改
byref s
并返回结果。这不是OP所拥有的。@GSerg有效,将其调整为不修改byref。请注意,这会导致为每个递归级别存储一个字符串副本,这在处理大型字符串时会对内存造成负担。哦,这很有意义!谢谢。您的代码修改了
byref s
,并返回结果。这不是OP所拥有的。@GSerg有效,将其调整为不修改byref。请注意,这会导致为每个递归级别存储一个字符串副本,这在处理大型字符串时会对内存造成负担。哦,这很有意义!非常感谢。