2016-07-24 8 views
0

良い日Pros 私は一緒に走っているマクロをたくさん持っています。そのうちの最後の列は列Bを使用してNO FILLで並べ替えるべきで、背景色のないデータが来ますリストの先頭に移動します。 (データには、以下のコードに基づいて約10、000行と35列が含まれています。青または紫の色を最初に使用すると機能しますが、機能しません。 16777215、ない運、私は間違って何をしていないのです PSを:。?。。私はNO FILLのために、他のVBAコードを見つけることができなかったxlNoneまたはvbWhiteはどちらか動作しません はありがとうVBAコードをNO FILLで列を並べ替えるコード

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( "シート1")を与えたマクロを記録した。AutoFilter.Sort .SortFields.Clear ActiveWorkbook.Worksheets( "シート1")AutoFilter.Sort.SortFields.Addキー:=レンジ_ ( "B1")、SortOn:= xlSortOnCellColor、注文:= xlAscending、DataOption:= _ xlSortNormal ActiveWorkbook.Worksheets( "Sheet1")。AutoFilter.Sort .Header = xlYes .MatchCase = Fa LSE .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply ワークシート セットSHTとして End Subのが、無作業 – John

+0

だから私は、サブsortfun(以下、このコードにそれを編集した) 薄暗いSHT =ワークシート(1)で終わりますマクロ ' ' sht.AutoFilter.Sort.SortFields.Clear sht.AutoFilter.Sort.SortFields.Addキーsortfun ' ':=レンジ_ ( "B1")、SortOn:= xlSortOnCellColor、注文:= xlAscending、DataOption:= _ xlSortNormalsht.AutoFilter.Sort で.Header = xlYes .MatchCase = Falseの .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply エンド End Subのではと私は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

これが唯一です。 「No Fill」セルを一番上に並べ替える方法はわからないので、「No Fill」セルを赤で色付けしてから色で並べ替えるのはなぜですか?必要に応じて色を復元することもできますし、カラーリストに基づいて特定の値を割り当てて並べ替えることもできます。

+0

ああ、それはデータや他のマクロに基づいて動作しません.Cposiba Nastya。 – John

+0

@ジョンあなたのワークシートの写真を共有できますか?そして今まで私をナスタと呼んではいけません。 –

+0

どのように写真を共有しますか?申し訳ありませんが、私は7歳のロシアの医学生でした。Anastasiyaの友人はNastyaと呼ばれていました.Tanyaanaなどと呼ばれていました。名前あなたの名前は旧ソ連の名前でした。再度申し訳ありません。 – John