处理从 VBA 搜索中获得的数字

Manipulating numbers obtained from a VBA search

我正在尝试在 Word 中制作一个脚本,该脚本允许我以编程方式将存储在 Word 文档中的时间更新为分钟和秒。时间是这样写的,[01:10]我想找到每个数字,并按特定的、一致的分钟数和秒数递增。

我可以使用以下代码找到时间码,但无法弄清楚如何将它们转换成数字,然后我可以处理这些数字并将其插入文档中。如有任何帮助,我们将不胜感激!

Sub findreplace()
Dim objWdDoc As Document
Set objWdDoc = ActiveDocument
Dim objWdRng As Range
Set objWdRng = objWdDoc.Content
With objWdRng.Find
    .ClearFormatting
    .Text = "\[([0-9][0-9]):([0-9][0-9])\]"
    .MatchWildcards = True
    .MatchSoundsLike = False
    .MatchAllWordForms = False
    If .Execute Then
        Do While objWdRng.Find.Found = True
        .Text = "[0-9][0-9]"
        If .Execute Then
            'Do something here!!
        End If
        Loop
    End If
End With
Set objWdRng = Nothing
End Sub

根据您的评论,这里有一个子项,您可以在其中提供要添加的时间和秒数,它将debug.print MM:SS 格式的时间。

Sub Main()
Dim T As Date 
T = #1:24:00 PM# ' <- Your time goes there 
Dim MyTime As String
Dim Seconds As Long: Seconds = 85 ' Seconds to add
MyTime = Format(DateAdd("s", Seconds, T), "mm:ss")
Debug.Print (MyTime)
End Sub

示例:向上面的日期添加 100 秒,请参见下面的输出(我的法语语言环境采用 24 小时格式,所以请不要介意。

编辑: 根据您的评论,这是一个您可以从任何子程序调用的函数。

Function AddSeconds(T As date, Seconds as Long) As String
Dim MyTime As String: MyTime = ""
MyTime = Format(DateAdd("s", Seconds, T), "mm:ss")
AddSeconds = MyTime
End Sub

请:

  1. 注意调用函数的时候需要补充 时间的正确参数格式如下例所示:

    MyNewTime = AddSeconds(#3:25:15 AM#,15)

  2. 它将return一个字符串数据类型并且不是一个日期所以MyNewTime必须是一个字符串或变体。