在列中将数字转换为date格式dd / mm / yyyy直到空单元格

所以我有下面的代码工作的特定范围的单元格。 但是我希望这个macros可以适用于不同的范围。 我基本上需要通过每个单元的代码,直到它到达一个空的单元格。 代码的第二部分我已经能够做到这一点,但改变前半部分是更棘手一些。 谁能帮忙?

Sub OldestDateComplete() Sheets(1).Activate Dim l As String Dim testdate As String Dim ConvertDate As Date Dim k As Integer For k = 3 To 7 l = Sheets(1).Cells(k, 9).Value testdate = CStr(l) dotdate = False If InStr(testdate, ".") Then dotdate = True If dotdate = False Then ConvertDate = DateValue(CInt(Left(testdate, Len (testdate) - 6)) & "/" & CInt(Mid(testdate, Len(testdate) - 5, 2)) & "/" & CInt(Right(testdate, 4))) If dotdate = True Then ConvertDate = DateValue(CInt(Left(testdate, Len(testdate) - 8)) & "/" & CInt(Mid(testdate, Len(testdate) - 6, 2)) & "/" & CInt(Right(testdate, 4))) Sheets(1).Cells(k, 9) = ConvertDate Next k Range(Range("I3"), Range("I3").End(xlDown)).Select ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Clear ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Add Key:=Range("I3"), _ SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal With ActiveWorkbook.Worksheets("Sheet1").Sort .SetRange Range(Range("I3"), Range("I3").End(xlDown)) .Header = xlNo .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With Range("I3").Select Selection.Copy Sheets("Sheet2").Select Range("AA1").Select ActiveSheet.Paste End Sub 

有很多方法可以做到这一点是最简单的…

 lastrow = Range("I1048576").End(xlUp).Row For k = 3 To lastrow l = Sheets(1).Cells(k, 9).Value testdate = CStr(l) dotdate = False If InStr(testdate, ".") Then dotdate = True If dotdate = False Then ConvertDate = DateValue(CInt(Left(testdate, Len (testdate) - 6)) & "/" & CInt(Mid(testdate, Len(testdate) - 5, 2)) & "/" & CInt(Right(testdate, 4))) If dotdate = True Then ConvertDate = DateValue(CInt(Left(testdate, Len(testdate) - 8)) & "/" & CInt(Mid(testdate, Len(testdate) - 6, 2)) & "/" & CInt(Right(testdate, 4))) Sheets(1).Cells(k, 9) = ConvertDate Next k