有时候我们会遇到需要用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


发表评论