首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从字符串中提取日期(文本框)

从字符串中提取日期(文本框)
EN

Stack Overflow用户
提问于 2021-02-26 21:57:28
回答 1查看 39关注 0票数 0

我正在尝试使用VBA遍历并查找文本框中的所有日期,而不管其格式如何。我想我的正则表达式起作用了。然而,当尝试填充组合框时,我遇到了困难。

也许我的代码有点乱七八糟,而且我做错了。我的意思是,它把每个单词都放在组合框中,而不仅仅是日期。

然而,下面是我的代码

代码语言:javascript
运行
复制
Private Sub CommandButton2_Click()

Call dates1

End Sub


Function ExtractDates(S As String)
  With CreateObject("VBScript.RegExp")
      .Pattern = .Pattern = "^(?:(?:31(\/|-|\.)(?:0?[13578]|1[02]))\1|(?:(?:29|30)(\/|-|\.)(?:0?[13-9]|1[0-2])\2))(?:(?:1[6-9]|[2-9]\d)?\d{2})$|^(?:29(\/|-|\.)0?2\3(?:(?:(?:1[6-9]|[2-9]\d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00))))$|^(?:0?[1-9]|1\d|2[0-8])(\/|-|\.)(?:(?:0?[1-9])|(?:1[0-2]))\4(?:(?:1[6-9]|[2-9]\d)?\d{2})$"
      .Global = True
      ExtractDates = Replace(Trim(.Replace(S, " $1")), " ", ", ")
  End With
End Function  


Sub dates1()

Dim dates1 As String
Dim dates2 As String

dates2 = ExtractDates(Me.txtS.Text)

Dim optarray
Dim opt

optarray = Split(dates2, ",")

With Me.ComboBox1
  .Clear
  For opt = 0 To UBound(optarray)
    .AddItem (optarray(opt))
  Next opt
End With
    
End Sub
EN

回答 1

Stack Overflow用户

发布于 2021-02-27 05:32:08

如果其他人感兴趣,我设法做到了:

代码语言:javascript
运行
复制
Option Explicit
Private Sub CommandButton1_Click()
CountDates (Me.TextBox1.Text)
End Sub

Function CountDates(S As String) As Long
Dim i As Integer
Dim result As String
Dim RE As Object, MC As Object

Const sPat As String = "\b(?:\d{1,2}/){2}(?:\d{4}|\d{2})\b"

Set RE = CreateObject("vbscript.regexp")

With RE
    .Pattern = sPat
    .Global = True
    Set MC = .Execute(S)
    CountDates = MC.Count
    
    CountDates = CountDates - 1
      
    If MC.Count <> 0 Then
        For i = 0 To CountDates
          Me.ComboBox1.AddItem (MC.Item(i))
        Next i
    End If
End With

End Function
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66387101

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档