作者:君君-你好 | 来源:互联网 | 2023-05-25 13:30
我是VBA的新手,想在使用RegEx时寻求一些帮助,我希望能以某种方式告诉我我做错了什么.我目前正在尝试将日期分成单独的日期,月份和年份,可能的分隔符包括","," - "和"/".
Function formattedDate(inputDate As String) As String
Dim dateString As String
Dim dateStringArray() As String
Dim day As Integer
Dim month As String
Dim year As Integer
Dim assembledDate As String
Dim monthNum As Integer
Dim tempArray() As String
Dim pattern As String()
Dim RegEx As Object
dateString = inputDate
Set RegEx = CreateObject("Vbscript.RegExp")
pattern = "(/)|(,)|(-)"
dateStringArray() = RegEx.Split(dateString, pattern)
' .... code continues
这就是我目前正在做的事情.但是,在RegEx.Split函数中似乎出现了问题,因为它似乎导致我的代码挂起而不能进一步处理.
为了确认,我做了一些简单的事情:
MsgBox("Hi")
pattern = "(/)|(,)|(-)"
dateStringArray() = RegEx.Split(dateString, pattern)
MsgBox("Bye")
"嗨"msgbox弹出,但"再见"msgbox永远不会弹出,而且代码进一步下降似乎根本没有被剔除,这导致我怀疑RegEx.Split导致它被卡住了.
我可以检查一下我是否真的以正确的方式使用RegEx.Split?根据MSDN 这里,斯普利特(字符串,字符串)返回一个字符串数组为好.
谢谢!
编辑:我正在尝试不探索CDate()函数,因为我试图不依赖于用户计算机的区域设置.
1> Florent B...:
要在VBA中使用正则表达式拆分字符串:
Public Function SplitRe(Text As String, Pattern As String, Optional IgnoreCase As Boolean) As String()
Static re As Object
If re Is Nothing Then
Set re = CreateObject("Vbscript.RegExp")
re.Global = True
re.MultiLine = True
End If
re.IgnoreCase = IgnoreCase
re.Pattern = Pattern
SplitRe = Strings.Split(re.Replace(text, ChrW(-1)), ChrW(-1))
End Function
用法示例:
Dim v
v = SplitRe("a,b/c;d", "[,;/]")