具体代码如下: Private Sub CommandButton1_Click() Dim re As Object, item, i As Long, arr() '定义re为对象变量,动态数组arr() Set re = CreateObject('vbscript.regexp') '利用后期绑定的方式创建对正则表达式的引用,赋值给变量re With re '利用with-end with语句设置正则表达式的三个属性 .Pattern = '[^(、,。;?)].+?[、,。;?]' '设置pattern属性,确定搜索条件是以除了、,。;?这几个标点符号外的任意一个或多个字符开始,以、,。;?这几个标点符号中的任意一个结尾的字符串。 .ignorecase = True '设置ignorerance属性,值为true表示忽略大小写进行搜索,这里也可以不要这句 .Global = True '设置global属性,值为true表示对目标文本进行全局匹配,这段文字中所有符合搜索条件的都被考虑到 End With If re.test(Range('a1').Text) Then 'test方法检验正则表达式有没有在A1单元格的文本中匹配到pattern中的字符 For Each item In re.Execute(Range('a1').Text) i = i + 1 ReDim Preserve arr(1 To i) '根据集合的元素个数确定i,根据i的变化重新声明动态数组的上界,用以保存正则表达式所提取出来的所有符合条件的字符串 arr(i) = item Next End If Range('o1').Resize(i, 1) = WorksheetFunction.Transpose(arr) '将数组arr中的数据列排到o列 End Sub |
|
来自: Excel实用知识 > 《VBA与EXCEL》