我正在使用vba按第2列的单元格颜色和第1列的值对动态范围的数据进行排序。代码只能按值排序,但在添加代码进行排序时出现语法错误细胞颜色也是如此。我已经在互联网上搜索了几个小时的类似情况,但都失败了。 (也许我不知道正确的关键词)
以下是我正在处理的代码。请对我说清楚,谢天谢地!
Dim oneRange As Range
Dim aCell As Range
Dim bCell As Range
Set oneRange = Selection
Set aCell = ActiveCell
Set bCell = ActiveCell.Offset(0, 1)
oneRange.Sort key1:=aCell, Order1:=xlAscending, Header:=xlYes
oneRange.Sort Key2:=bCell, _
SortOn:=xlSortOnCellColor, _
Order:=xlAscending, _
DataOption:=xlSortNormal).SortOnValue.Color = _
RGB(198, 239, 206)
End Sub
答案 0 :(得分:0)
您正在尝试混合Range Sort和WorkSheet Sort。
此行仍然具有录制宏时的右括号。该宏使用的是Worksheet SortFields.Add方法。
DataOption:=xlSortNormal).SortOnValue.Color = _
根据您的问题,无法编写准确的宏。尽量避免使用Selection,Activate,ActiveCell等。
这应该让你开始:
Sub SortData()
Dim aColumn As Range, bColumn As Range, Target As Range
With ActiveWorkbook.Worksheets("Sheet1")
Set Target = .Range("A1").CurrentRegion
Set aColumn = .Range("A2", .Range("A" & .Rows.Count).End(xlUp))
Set bColumn = .Range("B2", .Range("B" & .Rows.Count).End(xlUp))
With .Sort
.SortFields.Clear
.SortFields.Add(bColumn, xlSortOnCellColor, xlAscending, , xlSortNormal).SortOnValue.Color = RGB(198, 239, 206)
.SortFields.Add Key:=aColumn, SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
.SetRange Selection
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End With
End Sub