Excel VBA宏,用于将具有多个日期的列从旧日期排序为新日期
我对VBA宏非常陌生。我正在尝试创建一个宏,对名为“船只预计出发时间”的列进行排序!此列中有多个日期,格式为MM-DD-YYYY。我只想让我的宏对这个特定的列进行排序,从旧的/过去的日期开始,最后到新的/未来的日期。 我试过用很多方法编写代码,但都没有效果。下面是我的代码和excel屏幕截图供参考 我的代码:-Excel VBA宏,用于将具有多个日期的列从旧日期排序为新日期,excel,vba,Excel,Vba,我对VBA宏非常陌生。我正在尝试创建一个宏,对名为“船只预计出发时间”的列进行排序!此列中有多个日期,格式为MM-DD-YYYY。我只想让我的宏对这个特定的列进行排序,从旧的/过去的日期开始,最后到新的/未来的日期。 我试过用很多方法编写代码,但都没有效果。下面是我的代码和excel屏幕截图供参考 我的代码:- Sub Date_Sort() 'Vessel Estimated Time of Departure Dim wb As Workbook Dim fRng As Range D
Sub Date_Sort()
'Vessel Estimated Time of Departure
Dim wb As Workbook
Dim fRng As Range
Dim tRow As Long
Dim fCol As Long
Set wb = ThisWorkbook
Set fRng = wb.Sheets("Main").Rows(1).Find(what:="Vessel Estimated Time of Departure", LookIn:=xlValues, lookat:=xlWhole)
fCol = fRng.Column
tRow = wb.Sheets("Main").Cells(Rows.Count, 1).End(xlUp).Row
With Range("fRng" & tRow)
.Sort key1:=.Cells(1), order1:=xlDescending, _
Orientation:=xlTopToBottom, Header:=xlNo
End With
End Sub
“With Statement”中有一个错误
错误代码1004方法对象全局失败
Excel屏幕截图
我希望宏根据列“船舶预计离港时间”对数据进行排序。在此特定列中,只有日期(日期格式“MM-DD-YYYY”)和少量空白单元格。因此,宏应该将日期从旧日期排序到新日期,然后在新日期之后使用空白单元格对所有数据进行排序。您的主要问题在于
范围(“fRng”&tRow)
。如果您构建该范围地址,您将看到它是无效的。如果最后一行是20,您将得到V1:20
,这当然是一个无效的范围
纠正这个问题,改变变量以简化你最终得到的结果是
Option Explicit
Sub Sorter()
Dim ws As Worksheet: Set ws = ThisWorkbook.Sheets("Sheet1")
Dim Target As Range, lr As Long
Set Target = ws.Rows(1).Find("Vessel Estimated Time of Departure")
lr = ws.Cells(ws.Rows.Count, Target.Column).End(xlUp).Row
Target.Resize(lr, 1).Sort key1: = Target.Offset(1), order1:= xlDescending, Header:= xlYes
End Sub
您认为范围(“fRng”和tRow)指的是什么?