String vba预期数组

String vba预期数组,string,vba,String,Vba,有人有递归替换的好解决方案吗? 例如,MsgBox返回的字符串中仍以逗号结尾: Dim s As String s = "32,,,,,,,,,,,,,,,,23" MsgBox Replace(s, ",,", ",") 我只想要一个逗号 以下是我开发的代码,但它没有编译: Function RecursiveReplace(ByVal StartString As String, ByVal Find As String, ByVal Replace As String) As Stri

有人有递归替换的好解决方案吗? 例如,MsgBox返回的字符串中仍以逗号结尾:

Dim s As String
s = "32,,,,,,,,,,,,,,,,23"

MsgBox Replace(s, ",,", ",")
我只想要一个逗号

以下是我开发的代码,但它没有编译:

Function RecursiveReplace(ByVal StartString As String, ByVal Find As String, ByVal Replace As String) As String

    Dim s As String

    s = Replace(StartString, Find, Replace)
    t = StartString

    Do While s <> t
        t = s
        s = Replace(StartString, Find, Replace)
    Loop

RecursiveReplace = s
End Function
它说的是预期的数组


您可以使用正则表达式。这表明了基本思想:

Function CondenseCommas(s As String) As String
    Dim RegEx As Object
    Set RegEx = CreateObject("VBScript.RegExp")
    RegEx.Pattern = ",+"
    CondenseCommas = RegEx.Replace(s, ",")
End Function
测试结果如下:

Sub test()
    Dim s As String
    s = "32,,,,,,,,,,,,,,,,23"

    MsgBox CondenseCommas(s)
End Sub

可以使用正则表达式。这表明了基本思想:

Function CondenseCommas(s As String) As String
    Dim RegEx As Object
    Set RegEx = CreateObject("VBScript.RegExp")
    RegEx.Pattern = ",+"
    CondenseCommas = RegEx.Replace(s, ",")
End Function
测试结果如下:

Sub test()
    Dim s As String
    s = "32,,,,,,,,,,,,,,,,23"

    MsgBox CondenseCommas(s)
End Sub

保存工作后,是否可以确认错误再次出现,关闭包括主机应用程序(Excel或您使用的任何应用程序)在内的所有内容,然后重新打开?Replace是一个函数名。可能VBA认为您试图调用函数作为参数。是否尝试使用其他参数名称?(我的意思是不要使用Find/Replace作为变量名)@JacobH是对的,忽略了这一点。不能有名为Replace.yes的变量!谢谢我的函数中也有一个错误,但这就是编译错误的原因……您能否确认在保存您的工作后错误再次出现,关闭所有内容,包括主机应用程序(Excel或任何您使用的应用程序),然后重新打开?Replace是一个函数名。可能VBA认为您试图调用函数作为参数。是否尝试使用其他参数名称?(我的意思是不要使用Find/Replace作为变量名)@JacobH是对的,忽略了这一点。不能有名为Replace.yes的变量!谢谢我的函数中也有一个错误,但这就是编译错误的原因。。。。