处理从 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
请:
注意调用函数的时候需要补充
时间的正确参数格式如下例所示:
MyNewTime = AddSeconds(#3:25:15 AM#,15)
它将return一个字符串数据类型并且不是一个日期所以MyNewTime
必须是一个字符串或变体。
我正在尝试在 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
请:
注意调用函数的时候需要补充 时间的正确参数格式如下例所示:
MyNewTime = AddSeconds(#3:25:15 AM#,15)
它将return一个字符串数据类型并且不是一个日期所以
MyNewTime
必须是一个字符串或变体。