VBA 代码无法正确排序日期(Excel)

VBA 代码无法正确排序日期(Excel)

我有一个电子表格,用于跟踪项目和日期。每个项目都有与之关联的相应日期:

显示条件格式的屏幕截图:
显示条件格式的屏幕截图

如果日期距当前日期等于或小于 100 天,则日期单元格将以绿色突出显示,使用以下条件格式公式:

=TODAY()-C3:C12<120

如果日期距当前日期超过 100 天,则单元格将以红色突出显示,使用以下条件格式公式:

=TODAY()-C3:C12>=120

此外,所有行均按日期升序排序,并且空白日期单元格不产生任何条件格式:

=ISBLANK(C3:C12)=TRUE

我试图解决的问题是,当某个特定项目的日期更新时,需要使用 VBA 代码将所有行动态地重新排列为新的升序日期顺序。

在屏幕截图中,您会注意到第 6 项的位置不对。宏应自动将其整行按日期顺序移动到正确的顺序。

我尝试过将以下在网上找到的脚本合并到其中。不幸的是,随后出现了一些非常奇怪的行为,我的行被重新排列,我无法正确理解。无论我做什么,标题都会被宏移动到所有其他内容之下!

有人能看出这个 VBA 代码有什么问题吗?只要我更新任何日期,它就会把我的数据弄得一团糟。

Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
Range("C3").Sort Key1:=Range("C12"), _
  Order1:=xlAscending, Header:=xlNo, _
  OrderCustom:=1, MatchCase:=False, _
  Orientation:=xlTopToBottom
End Sub

编辑:

“您尚未提供脚本链接”

脚本链接: https://www.extendoffice.com/documents/excel/3655-excel-auto-sort-by-date.html

“...更重要的是告诉我们随机脚本实际上应该做什么”

该脚本应该在输入或修改日期时自动对其进行排序,如下所述:

“我想解决的问题是,当某个特定项目的日期更新时,所有行都需要使用 VBA 代码动态重新排列为新的升序日期顺序“”。

... 和:

它的整个行应该自动按照日期顺序移动到正确的顺序,通过宏“”。

抱歉,我没有说清楚,这个脚本的目的是在修改日期时动态地安排日期。

添加新日期后会发生以下情况;标题会移至数据下方:

标题与数据一起排序

有人能知道为什么标题会被移到数据下方吗?

答案1

我通过修改范围值解决了我的问题,如下所示:

Private Sub Worksheet_Change(ByVal Target As Range)
Range("B3:C12").Sort Key1:=Range("C3"), _
  Order1:=xlAscending, Header:=xlNo, _
  OrderCustom:=1, MatchCase:=False, _
  Orientation:=xlTopToBottom
End Sub

我最初只引用了一个单元格,而不是单元格范围,因此脚本最终对每一行(包括标题)进行了排序。现在它按预期工作了。

我的问题是可以回答的,这就是答案。

相关内容