2016-07-24 112 views
0

美好的一天優點 我有一堆宏,我一起運行,他們中的最後一個應該使用列B排序NO NO FILL,以便沒有背景顏色的數據來到列表的頂部。 (根據下面的代碼,數據包含大約10,000行和35列,當我使用藍色或紫色列在第一位時,它可以工作,但它不適用於無填充。我使用了0,我也使用了。16777215,但沒有運氣什麼我做錯了 PS:我無法找到任何其他VBA代碼沒有補xlNone或vbWhite也不管用 謝謝VBA代碼來排序列沒有填充

Sub ColByNofill() 

    'Sub Just(sht As Worksheet) 
    Dim rngSort As Range 
    Dim rngTable As Range 
    Dim sColor As Long 
    Dim sht As Worksheet 

    Set sht = Worksheets(1) 

    sColor = 0 'No Fill 

    'sColor = 16777215 ' white color 
    'sColor = 10498160 'purple 

    'sColor = 15790082 ' blue color 

    RowCount = sht.Range("B1").End(xlDown).Row 
    Set rngSort = sht.Range("B1:A" & RowCount) 
    Set rngTable = sht.Range("B1:" & sht.Cells(RowCount, sht.UsedRange.Columns.Count).Address(RowAbsolute:=False, ColumnAbsolute:=False)) 

    sht.Sort.SortFields.Clear 
    sht.Sort.SortFields.Add(rngSort, _ 
     xlSortOnCellColor, xlAscending, , _ 
     xlSortNormal).SortOnValue.Color = sColor 

    With sht.Sort 
     .SetRange rngTable 
     .Header = xlYes 
     .MatchCase = False 
     .Orientation = xlTopToBottom 
     .SortMethod = xlPinYin 
     .Apply 
    End With 

End Sub 
+0

編輯這個......我錄一個宏這給了我下面UB sortfun這個代碼() ' ' sortfun宏 ' ' ActiveWorkbook.Worksheets( 「工作表Sheet1」)。AutoFilter.Sort .SortFields.Clear ActiveWorkbook.Worksheets( 「工作表Sheet」)AutoFilter.Sort.SortFields.Add鍵:=範圍_ ( 「B1」),SortOn:= xlSortOnCellColor,訂購:= xlAscending,DataOption:= _ xlSortNormal With ActiveWorkbook.Worksheets(「Sheet1」)。AutoFilter.Sort .Header = xlYes .MatchCase = Fa LSE .Orientation = xlTopToBottom .SortMethod = xlPinYin 。適用 隨着 結束子,但沒有工作結束 – John

+0

所以我它編輯以下面子sortfun() 昏暗SHT將該代碼作爲工作表 集SHT =工作表(1) ' ' sortfun宏 ' ' sht.AutoFilter.Sort.SortFields.Clear sht.AutoFilter.Sort.SortFields.Add鍵:=範圍_ ( 「B1」),SortOn:= xlSortOnCellColor,訂單:= xlAscending,DataOption:= _ xlSortNormal 隨着sht.AutoFilter.Sort .Header = xlYes .MatchCase =假 .Orientation = xlTopToBottom .SortMethod = xlPinYin 。適用 隨着 結束分結束,我在sht.AutoFilter.Sort.SortFields得到錯誤91。清除當我結合所有的宏。 – John

回答

0

回答我自己的問題,我所要做的就是停止分配顏色,所以我評論sColor = 0並更改了sortOnValue.color = xlNone,請參閱下面編輯的代碼。

Sub ColByNoFill 
Dim rngSort As Range 
Dim rngTable As Range 
Dim sColor As Long 

'sColor = 0 

RowCount = sht.Range("A1").End(xlDown).Row 
Set rngSort = sht.Range("A1:A" & RowCount) 
Set rngTable = sht.Range("A1:" & sht.Cells(RowCount, sht.UsedRange.Columns.Count).Address(RowAbsolute:=False, ColumnAbsolute:=False)) 

sht.Sort.SortFields.Clear 
sht.Sort.SortFields.Add(rngSort, _ 
    xlSortOnCellColor, xlAscending, , _ 
    xlSortNormal).SortOnValue.Color = xlNone 

With sht.Sort 
    .SetRange rngTable 
    .Header = xlYes 
    .MatchCase = False 
    .Orientation = xlTopToBottom 
    .SortMethod = xlPinYin 
    .Apply 
End With 
End Sub 
0

這僅僅是一個。因爲我不知道如何將「無填充」單元排列在頂部,但爲什麼不用「紅色」填充「無填充」單元,然後按顏色分類?然後,您可以根據需要恢復顏色,或者您可以根據顏色列表分配某些值,然後對其進行分類

+0

哦,不,這不會基於數據和其他宏..Cposiba Nastya工作。 – John

+0

@John你能分享一下你的工作表嗎?並且永遠不要叫我Nastya。 –

+0

我如何分享照片?對於這個名字我很抱歉,我是俄羅斯的一名醫學生,已經7年了,我的朋友Anastasiya被稱爲Nastya,就像塔季揚娜被稱爲Tanya等。你的名字建議一個前蘇聯名字,這就是爲什麼。再次抱歉。 – John