【发布时间】:2015-03-22 07:42:13
【问题描述】:
我是 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")
“Hi”msgbox 弹出,但“Bye”msgbox 永远不会弹出,更下方的代码似乎根本没有被执行,这导致我怀疑 RegEx.Split 导致它被卡住了。
我可以检查我是否真的以正确的方式使用 RegEx.Split 吗?根据 MSDN here,Split(String, String) 也返回一个字符串数组。
谢谢!
编辑:我试图不探索 CDate() 函数,因为我试图不依赖于用户计算机的区域设置。
【问题讨论】:
-
您真的需要为此使用
RegEx吗?CDate不符合要求吗? -
首先,
Split不是正则表达式的方法。其次,您链接的参考是 VB.Net,而不是 VBA。在 VBA 的 Regex 以及 Split 函数上,SO 中有很多答案。 -
@paul 由于一些复杂的原因,我试图不依赖计算机上的区域设置。但是 CDate 如何帮助拆分它呢?
-
@chrisneilsen 哦,这不是一回事吗?请原谅我自己的困惑。我一直试图在 SO for Regex Split in VBA 中找到它,但无济于事,但谢谢,我会尝试继续搜索
-
datVar = CDate("10/11/12")然后Year(datVar),Month(datVar),Day(datVar)
标签: regex excel vba string-split