我有一個選定範圍,並且在該範圍內,我希望按特定列進行排序,以便每行都保持相同,即排序功能只是基於無論我選擇哪一列進行排序。Excel VBA按特定列對命名範圍進行排序
到目前爲止我的代碼是這樣的:
Sub CustomSortAscendingExcel(ByVal control As IRibbonControl, ByRef cancelDefault As Variant)
Dim selRange As range
Dim usedRange As range
Dim checkRange As range
Dim shtData As Worksheet
Set shtData = Worksheets("Data")
shtData.Activate
shtData.Unprotect
Set selRange = Selection
Set usedRange = returnUsedRange
Set checkRange = Intersect(usedRange, selRange)
If Not Application.Intersect(usedRange, selRange) Is Nothing Then
With ActiveSheet
usedRange.Sort Key1:=selRange, Order1:=xlAscending, DataOption1:=xlSortNormal, MatchCase:=False, SortMethod:=xlPinYin, _
Header:=xlNo, Orientation:=xlSortColumns
.Sort.Apply
End With
而對於排序降序相似。這對column1工作正常。我的問題是,對於第2,3,4列,它只適用於那些在column1中有值的行,而對於那些沒有的值。例如,在下面的圖像中,按列3排序正確地重排了前9行,但不是最後兩行。
任何人都可以提出一種方法來解決這個問題嗎?謝謝!
? – 2013-05-02 10:39:18
你是什麼意思?我不想從結果 – db579 2013-05-02 10:40:42
中刪除那些行,哪個區域在您的代碼中引用了'usedRange'? – 2013-05-02 10:42:39