Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/joomla/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel VBA宏,用于将具有多个日期的列从旧日期排序为新日期_Excel_Vba - Fatal编程技术网

Excel VBA宏,用于将具有多个日期的列从旧日期排序为新日期

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

我对VBA宏非常陌生。我正在尝试创建一个宏,对名为“船只预计出发时间”的列进行排序!此列中有多个日期,格式为MM-DD-YYYY。我只想让我的宏对这个特定的列进行排序,从旧的/过去的日期开始,最后到新的/未来的日期。 我试过用很多方法编写代码,但都没有效果。下面是我的代码和excel屏幕截图供参考

我的代码:-

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)指的是什么?