我有一个宏,该宏将日期作为文本粘贴到一列中,并且我在某处阅读过,将文本转换回日期的最佳解决方案是搜索并替换"/"
。
如果我在Excel中手动执行此操作,它就像微风一样工作。但是,当我尝试使用宏执行此操作时,看不到将单元格转换为日期。
这是宏记录器给我的以及我要使用的内容:
Range("t_drill[Date]").Replace What:="/", Replacement:="/", LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=True, SearchFormat:=False, ReplaceFormat:=False
答案 0 :(得分:1)
使用TextToColumns转换日期:
这是日期格式DMY,如果您使用其他日期格式,则必须进行调整。
Range("t_drill[Date]").TextToColumns Destination:=Range("t_drill[Date]"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
Semicolon:=False, Comma:=False, Space:=False, Other:=False, FieldInfo _
:=Array(1, 4), TrailingMinusNumbers:=True
要调整为不同的日期格式,请根据需要进行更改:
MDY := Array(1,3)
DMY := Array(1,4)
YMD := Array(1,5)
MYD := Array(1,6)
DYM := Array(1,7)
YDM := Array(1,8)
答案 1 :(得分:0)
尝试将“值”设置为CDate的返回值。那也改变了单元格的格式。
Sub WorkWithTableData()
Dim doc As Word.Document
Dim i As Long, tblRow As Row, tblCol As Column
Set doc = ActiveDocument
On Error GoTo errHandler
For i = 1 To doc.Tables.Count
For Each tblRow In doc.Tables(i).rows
'do something
Next tblRow
NextStep:
For Each tblCol In doc.Tables(i).Columns
'do something
Next tblCol
NextTable:
Next i
Exit Sub
errHandler:
Select Case Err
Case 5991
MsgBox "Table #" & i & " has vertically merged cells"
Resume NextStep
Case 5992
MsgBox "Table #" & i & " has horizontally merged cells"
Resume NextTable
Case Else
MsgBox "Error " & Err.Number & ": " & _
Err.Description & " in table #" & i
Resume NextTable
End Select
End Sub
注意:最初我认为t_drill [Date]是一个单元格。我更新了代码,使其可用于多个单元格。