1

所以我有一个“标志”列,我有条件地格式化为=IF(INDIRECT("RC",0)="",TRUE,FALSE),如果单元格为空白,它会更改字体颜色,以便字体颜色为不同的颜色(蓝色),因为当我手动按值排序时,空白单元格最终位于底部. 当我按字体颜色手动排序时,一切正常。

手动排序: 在此处输入图像描述
手动排序结果:
在此处输入图像描述

这个想法是让它成为一个宏,所以我记录了我做手动排序并得到以下信息:

Range("A1:F9").Select
ActiveWorkbook.Worksheets("Sheet1").SORT.SortFields.Clear
ActiveWorkbook.Worksheets("Sheet1").SORT.SortFields.Add(Range( _
    "E2:E9"), xlSortOnFontColor, xlDescending, , xlSortNormal).SortOnValue.Color = _
    RGB(0, 0, 0)
ActiveWorkbook.Worksheets("Sheet1").SORT.SortFields.Add Key:= _
    Range("D2:D9"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
    xlSortNormal
With ActiveWorkbook.Worksheets("Sheet1").SORT
    .SetRange Range("A1:F9")
    .Header = xlYes
    .MatchCase = False
    .Orientation = xlTopToBottom
    .SortMethod = xlPinYin
    .Apply
End With

但是,当我运行记录的代码时,我得到的结果与我想要的完全相反,底部带有空白标志的单元格:
在此处输入图像描述

我尝试将xlSortOnFontColor's更改xlDescendingxlAscending,但它仍然具有相同的非预期结果。

问题: 鉴于我为一个有效的手动过程录制了一个宏,为什么录制的代码不起作用,代码应该是什么?

4

1 回答 1

3

您尚未选择要排序的字体颜色:

.SortOnValue.Color = _
RGB(0, 0, 0)

这也显示在您的排序屏幕截图中。再次录制宏并专门选择字体颜色将其放在顶部。再次记录更容易,否则您需要找出所选颜色的 RGB 代码。

录制过程仍然远非完美,但它仍然是一个非常有用的工具。

于 2013-06-26T20:26:56.147 回答