Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 1888|回复: 1

[已解决]关于正则的小问题---无效的过程调用或参数

[复制链接]
发表于 2016-5-2 15:36 | 显示全部楼层 |阅读模式
本帖最后由 lingyuncelia1 于 2016-5-2 16:29 编辑

Sub celia()
For i = 2 To 46
Set reg = CreateObject("vbscript.regexp")
reg.Global = True
reg.Pattern = "1\d{10}"
s = Cells(i, 1)
Set myMatch = reg.Execute(s)
If reg.test(s) Then Cells(i, 2) = myMatch(0)   ‘为什么将0改为1运行,系统会有下图提示?
Next
End Sub
捕获.PNG

最佳答案
2016-5-2 16:20
Execute:返回一个 MatchCollection 对象,该对象包含每个成功匹配的 Match 对象。


对于1楼例子来说
第7行可匹配到2个号,第1个即myMatch(0) ,第2个即myMatch(1)
而第14行只能匹配1个号,第1个即myMatch(0) 。因为不存在第2个myMatch(1),所以出错。


和数组的下标越界相似
redim arr(0 to 0)
数组arr只有1个数组元素,即arr(0),如果要用arr(1),自然报错。


不规则的电话号码.zip

4.7 KB, 下载次数: 3

发表于 2016-5-2 16:20 | 显示全部楼层    本楼为最佳答案   
Execute:返回一个 MatchCollection 对象,该对象包含每个成功匹配的 Match 对象。


对于1楼例子来说
第7行可匹配到2个号,第1个即myMatch(0) ,第2个即myMatch(1)
而第14行只能匹配1个号,第1个即myMatch(0) 。因为不存在第2个myMatch(1),所以出错。


和数组的下标越界相似
redim arr(0 to 0)
数组arr只有1个数组元素,即arr(0),如果要用arr(1),自然报错。


评分

参与人数 1 +3 收起 理由
lingyuncelia1 + 3

查看全部评分

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-4-25 17:42 , Processed in 0.385230 second(s), 11 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表