记录宏不记录正确的排序代码(与手动方法记录的结果不同)

时间:2013-06-26 18:56:17

标签: excel vba sorting excel-vba excel-2007

所以我有一个“标记”列,我使用=IF(INDIRECT("RC",0)="",TRUE,FALSE)条件格式化,如果单元格为空,则更改字体颜色以使字体颜色为不同颜色(蓝色),因为我按值手动排序,空白单元格最终落在底部。当我按字体颜色手动排序时,一切正常。

手动排序: enter image description here
手动排序结果
enter image description here

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

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

但是,当我运行录制的代码时,我得到的与我想要的完全相反,底部带有空白标记的单元格:
enter image description here

我已尝试将xlSortOnFontColor的{​​{1}}更改为xlDescending,但仍有相同的非理想结果。

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

1 个答案:

答案 0 :(得分:3)

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

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

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

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