VBA代码大全037:如何用vba将字符串重复N次?

有时候我们会遇到需要用vba代码将指定的字符串重复N次的情况。

 

比如字符串”ab”,重复4次,生成”abababab”。

 

如果是在excel工作表中,我们可以很轻松的用Rept函数来实现。

 

=REPT("ab",4)

 

但是vba中没有内置函数可以直接实现将指定的字符串重复N次。

 

我们可以直接调用Rept工作表函数来实现,代码如下:

Sub 水星Excel()
    Dim s1 As String
    s1 = "ab"
    s2 = Excel.Application.WorksheetFunction.Rept("ab", 4)
    MsgBox s2
End Sub

 

但是如果是在word vba或者ppt vba中,由于没有这个工作表函数,只能使用循环的方式创建一个自定义函数。

 

以下自定义函数可以将任意字符串指定重复N次。

 

Function StrRept(ByVal strOrigin As String, ByVal N As Long, Optional delimiter = "")
    '将指定字符串重复生成N次的自定义函数,
    'strOrigin参数表示原始字符串,N参数表示要重复的次数,delimiter参数表示指定的分隔符,默认为不带分隔符
    Dim arr()
    For i = 0 To N - 1
        ReDim Preserve arr(i)
        arr(i) = strOrigin
    Next i
    StrRept = Join(arr, delimiter)
End Function

 

这样,下次再word vba或者ppt vba中就可以直接这样调用:

 

Function StrRept(ByVal strOrigin As String, ByVal N As Long, Optional delimiter = "")
    '将指定字符串重复生成N次的自定义函数,
    'strOrigin参数表示原始字符串,N参数表示要重复的次数,delimiter参数表示指定的分隔符,默认为不带分隔符
    Dim arr()
    For i = 0 To N - 1
        ReDim Preserve arr(i)
        arr(i) = strOrigin
    Next i
    StrRept = Join(arr, delimiter)
End Function
Sub 水星excel()
    Dim str1 As String
    str1 = "ab"
    MsgBox StrRept(str1, 4)
End Sub​
       

发表评论