操纵从VBA搜索获得的数字

时间:2015-02-17 09:25:46

标签: vba ms-word word-vba

我正在尝试在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

1 个答案:

答案 0 :(得分:1)

根据您的评论,这是一个子文件,您可以在其中提供要添加的时间和秒数,并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小时格式,所以不要介意。

enter image description here

编辑根据你的评论,这是一个可以从任何子句中调用它的函数。

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. 它将返回字符串数据类型,不是日期,因此MyNewTime必须是字符串或变体。