Excel VBA-替换表列中的文本

时间:2019-06-03 11:42:44

标签: excel vba

我有一个宏,该宏将日期作为文本粘贴到一列中,并且我在某处阅读过,将文本转换回日期的最佳解决方案是搜索并替换"/"

如果我在Excel中手动执行此操作,它就像微风一样工作。但是,当我尝试使用宏执行此操作时,看不到将单元格转换为日期。

这是宏记录器给我的以及我要使用的内容:

Range("t_drill[Date]").Replace What:="/", Replacement:="/", LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=True, SearchFormat:=False, ReplaceFormat:=False

2 个答案:

答案 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]是一个单元格。我更新了代码,使其可用于多个单元格。