Option Explicit
Private Sub cmdCellReset_Click()
Range("C6:D14").Sort Key1:=Range("D6"), _
Order1:=xlAscending, _
Header:=xlNo, _
OrderCustom:=1, _
MatchCase:=False, _
Orientation:=xlTopToBottom
Range("B2").Select
End Sub
Private Sub cmdTextReset_Click()
Range("H6:I14").Sort Key1:=Range("I6"), _
Order1:=xlAscending, _
Header:=xlNo, _
OrderCustom:=1, _
MatchCase:=False, _
Orientation:=xlTopToBottom
Range("B2").Select
End Sub
Private Sub cmdSortCell_Click()
SortByColour Range("C6:D14"), Range("C6")
End Sub
Private Sub cmdSortText_Click()
SortByColour Range("H6:I14"), Range("H6"), False
End Sub
Option Explicit
Sub SortByColour(SortData As Range, _
Key1 As Range, _
Optional ByCell As Boolean = True, _
Optional Order1 = xlAscending, _
Optional Key2 As Range, _
Optional Order2 = xlAscending, _
Optional Key3 As Range, _
Optional Order3 = xlAscending, _
Optional Header = xlNo)
Dim cell As Range
Dim rngData As Range
Dim rngToSort As Range
Dim rngKey1 As Range
Application.ScreenUpdating = False
Key1.Cells(1, 2).EntireColumn.Insert
Set rngKey1 = Key1.Cells(1, 2)
If Header = xlYes Then
Set rngData = Key1.Cells(2, 1).Resize(SortData.Rows.Count, 1)
Else
Set rngData = Key1.Cells(1, 1).Resize(SortData.Rows.Count, 1)
End If
For Each cell In rngData
cell.Offset(0, 1).Value = IIf(ByCell, cell.Interior.ColorIndex, cell.Font.ColorIndex)
Next cell
Select Case True
Case Not Key2 Is Nothing And Not Key3 Is Nothing:
SortData.Sort Key1:=rngKey1, _
Order1:=Order2, _
Key2:=Key2, _
Order2:=Order2, _
Key3:=Key3, _
Order3:=Order3, _
Header:=Header
Case Not Key2 Is Nothing:
SortData.Sort Key1:=rngKey1, _
Order1:=Order2, _
Key2:=Key2, _
Order2:=Order2, _
Header:=Header
Case Else:
SortData.Sort Key1:=rngKey1, _
Order1:=Order1, _
Header:=Header
End Select
SortData.Cells(1, 2).EntireColumn.Delete
Set cell = Nothing
Set rngData = Nothing
Set rngToSort = Nothing
Set rngKey1 = Nothing
Application.ScreenUpdating = True
End Sub
|