老大利害,今天我在老大的基础上改了下,好像速度提高一点点。
Sub 不重复字符知多少() Dim ast As String '这个变量定义要设置的字符串 Dim arr '数组,读出字符串的每一个为数组各值 Dim i As Long, b Dim atime As Date '定义一个时间定量,以测程式运行的时间 atime = Time ast = ActiveDocument.Content
ReDim arr(Len(ast) - 1) '因为数组是从0开始的,所以-1才等于数组的长度 For i = 1 To Len(ast) '取每个值放到对应的数组内 arr(i - 1) = Mid(ast, i, 1) '同理,数组是0开始,所以,减0 Next Dim OnlyText For Each b In arr If b Like "[一-龥]" Then '如果属于汉字字符(CJK统一汉字字符集) If OnlyText = "" Then OnlyText = b '为变量赋初值 ElseIf VBA.InStr(OnlyText, b) = 0 Then '如果在OnlyText变量中,没有出现过的字符,则加入该变量字符集中 OnlyText = OnlyText & b End If End If
Next MsgBox Len(OnlyText), vbOKOnly, Time - atime End Sub |