包含使用VBA

时间:2017-01-31 09:16:08

标签: vba excel-vba excel

我正在尝试将包含日期的列从Text转换为Column,因为它当前不是日期格式。我可以在Excel上轻松完成此操作。但是,面临在VBA上正确行事的挑战。

我尝试了多个代码。但是,他们只将列的某些单元格转换为日期格式,但不转换所有单元格。

任何帮助都将受到高度赞赏。

以下是我正在使用的代码:

With ActiveSheet.UsedRange.Columns("B").Cells
.TextToColumns Destination:=.Cells(1), DataType:=xlFixedWidth, FieldInfo:=Array(0, xlYMDFormat)
.NumberFormat = "yyyy-mm-dd"   'change to any date-based number format you prefer the cells to display
End With

1 个答案:

答案 0 :(得分:0)

无论如何,请这样做:

Option Explicit

Public Sub TestMe()

With ActiveSheet.Range("B:" & lastRow(column_to_check:=2))

    .TextToColumns Destination:=.Cells(1), DataType:=xlFixedWidth, FieldInfo:=Array(0, xlYMDFormat)
    .NumberFormat = "yyyy-mm-dd"
End with
End Sub

Public Function lastRow(Optional str_sheet As String, Optional column_to_check As Long = 1) As Long

    Dim shSheet  As Worksheet

        If str_sheet = vbNullString Then
            Set shSheet = ThisWorkbook.ActiveSheet
        Else
            Set shSheet = ThisWorkbook.Worksheets(str_sheet)
        End If

    lastRow = shSheet.Cells(shSheet.Rows.Count, column_to_check).End(xlUp).Row

End Function

lastRow函数返回column_to_check中的最后一行。在您的情况下,第二列。