宏搜索代码[DM],然后需要将“17/11/2013”找到的日期转换为“2013年11月17日”。到目前为止,我已经尝试了一些没有任何成功建议的选项,但我希望我需要将单元格文本链接为要格式化的文本。
Sub ChangeMonth()
Dim strCellText As String
'Change month numbers to words
Do
Selection.HomeKey Unit:=wdStory
Selection.Find.ClearFormatting
With Selection.Find
.Text = "[DM]"
.Forward = True
.Wrap = wdFindContinue
End With
If Selection.Find.Execute = False Then
Exit Do
Else
Selection.Delete Unit:=wdCharacter, Count:=1
Selection.SelectCell
Debug.Print Format(CDate(strCellText), "DD-MMM-YYYY")
End If
Loop
End Sub
答案 0 :(得分:1)
只需尝试Format
功能?
Debug.Print Format(#2014/01/01#, "DD/MMM/YYYY")
结果:
01/Jan/2014
同样适用于其他日期格式:
Debug.Print Format(#01/01/2014#, "DD-MMM-YYYY")
结果:
01-Jan-2014
Format
函数将类似日期或日期的字符串作为其第一个参数。根据您拥有的数据,您可能需要将其包装在CDate
中以确保正确的转换,例如:
Format(Cdate(var), "DD-MM-YYYY")
'assumes "var" is a variable which represents the date/string value
使用CDate
将字符串强制转换为日期类型的另一个屏幕截图(虽然我不认为这是必要的,但以防万一):
在您的代码中,我做了一些更改:
Sub ChangeMonth()
Dim strCellText As String
Dim c As Selection
Dim rng As Range
'Change month numbers to words
Do
Selection.HomeKey Unit:=wdStory
Selection.Find.ClearFormatting
With Selection.Find
.Text = "[DM]"
.Forward = True
.Wrap = wdFindContinue
End With
If Selection.Find.Execute = False Then
Exit Do
Else
Selection.Delete Unit:=wdCharacter, Count:=1
Selection.SelectCell
Set c = Selection
'Set rng = c.Range.Words(1, c.Words.Count - 1)
strCellText = Trim(Left(c.Text, Len(c.Text) - 2))
'Debug.Print Format(CDate(strCellText), "DD-MMM-YYYY")
Selection.Text = Format(CDate(strCellText), "DD-MMM-YYYY")
End If
Loop
End Sub