ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
楼主: jie-jie

[求助] [未解决]运行错误是VBA不支持吗?

[复制链接]

TA的精华主题

TA的得分主题

发表于 2010-5-28 22:00 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
我想要你的工具

我也猜测是PATTERN的问题

TA的精华主题

TA的得分主题

发表于 2010-5-28 22:02 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
Dim arr, i%, regex
Set regex = CreateObject("vbscript.regexp")
arr = Range("a1:a4")
With regex
    .Global = True
'    .MultiLine = True
    .Pattern = "(?<Year>(19|20)[0-1]\d)[-_/]?(?<month>[0-1]\d)[-_/]?(?<day>[0-3]\d)"
    For i = 1 To 4
       MsgBox .test(arr(i, 1))
    Next
End With


Dim arr, i%, regex
Set regex = CreateObject("vbscript.regexp")
arr = Range("a1:a4")
With regex
    .Global = True
    .Pattern = "(19|20)\d\d[-_/]?[0-1]\d[-_/]?[0-3]\d"
    For i = 1 To 4
       MsgBox .test(arr(i, 1))
    Next
End With

我想了解一下,既然你下面的这段程序可以达到效果,为什么又要用上面的那个??
对正则不太懂,不好意思

TA的精华主题

TA的得分主题

发表于 2010-5-28 22:11 | 显示全部楼层
原帖由 jie-jie 于 2010-5-28 18:11 发表


我晕,我现在才知道你们的回答是什么意思,是我递归了TEST吗?错了,我这里的TEST的正则表达式的方法,不是过程!我改一下过程名总行了吧:
Sub aa() '不能运行,在正则表达式测试工具中是没有问题的
Dim arr,  ...


不好意思,匆匆一看没注意test前还有一个. 呵呵。

下载附件运行了一下,“运行时错误 '5017'",搜了一下,原因是正则表达式语法错误。

5016 800A1398 需要正则表达式对象
5017 800A1399 正则表达式语法错误
5018 800A139A 未预期的限定符
5019 800A139B 正则表达式中缺少“]”
5020 800A139C 正则表达式中缺少“)”



因为没有仔细研究过正则表达式,因此无法给出正则表达式中语法错误的部分。
同为正则表达式,存在很多的”方言“,不同的语言中的语法还是有一定的区别的,对于楼主在其他环境中能通过的模式,在VB script中不一定能通过,这就是出现问题的原因。可以拿个简单的模式来匹配一下试试,可以正常运行的。

[ 本帖最后由 lbpp 于 2010-5-28 22:27 编辑 ]

TA的精华主题

TA的得分主题

发表于 2010-5-28 22:40 | 显示全部楼层
不知你要的结果是不是下面的正则表达式

.Pattern = "((19|20)[0-1]\d)[-_/]?([0-1]\d)[-_/]?([0-3]\d)"

TA的精华主题

TA的得分主题

 楼主| 发表于 2010-5-28 22:46 | 显示全部楼层
谢谢楼上两位老师回复,要匹配的表达式是:(?<Year>(19|20)[0-1]\d)[-_/]?(?<month>[0-1]\d)[-_/]?(?<day>[0-3]\d)
工具大了一点传不了,给一个在线工具,Pattern 是没问题的
http://www.zhongguosou.com/compu ... ols/test_regex.aspx

TA的精华主题

TA的得分主题

 楼主| 发表于 2010-5-28 22:49 | 显示全部楼层
楼上老师的“在其他环境中能通过的模式,在VB script中不一定能通过,这就是出现问题的原因”和我估计的原因(vba的vbscript正则表达式不支持的观点)有一点相似,就是有没有不支持的确切论据,是不是还是什么方法我们没掌握,请懂的人指教

TA的精华主题

TA的得分主题

发表于 2010-5-28 23:21 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
你的工具名称叫什么??

"(?<Year>(19|20)[0-1]\d)[-_/]?(?<month>[0-1]\d)[-_/]?(?<day>[0-3]\d)"这里的year、month、day是用来做什么的?

TA的精华主题

TA的得分主题

 楼主| 发表于 2010-5-28 23:27 | 显示全部楼层
原帖由 来生缘 于 2010-5-28 23:21 发表
你的工具名称叫什么??

"(?(19|20)[0-1]\d)[-_/]?(?[0-1]\d)[-_/]?(?[0-3]\d)"这里的year、month、day是用来做什么的?


你问的问题下图中都有了,还请帮忙!
QQ截图未命名.png

TA的精华主题

TA的得分主题

 楼主| 发表于 2010-5-28 23:32 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
"(?<Year>(19|20)\d\d)[-_/]?(?<month>[0-1]?\d)[-_/]?(?<day>[0-3]?\d)"这个更好些,但都无关紧要啦,问题关键是script是不是支持捕获组。(表述的不专业,达人你懂的)

TA的精华主题

TA的得分主题

发表于 2010-5-29 16:29 | 显示全部楼层
原帖由 jie-jie 于 2010-5-28 22:46 发表
谢谢楼上两位老师回复,要匹配的表达式是:(?(19|20)[0-1]\d)[-_/]?(?[0-1]\d)[-_/]?(?[0-3]\d)
工具大了一点传不了,给一个在线工具,Pattern 是没问题的
http://www.zhongguosou.com/computer_question_tools/te ...

pattern的确没有问题。我是用RegexBuddy3测试的,在这个工具中有一个功能是转换为各种语言的语法,.Pattern = "((19|20)[0-1]\d)[-_/]?([0-1]\d)[-_/]?([0-3]\d)" 就是通过他转换过来的,楼主的pattern转换为不同的语言的语法后pattern也会不同。不知这算不算是不支持的确切论据。
regex.gif
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-24 01:52 , Processed in 0.037467 second(s), 8 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

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