2016-07-24 5 views
0

Guten Tag Pros Ich habe eine Reihe von Makros, die ich zusammen laufen, die letzte von ihnen sollte Spalte B nach NO FILL zu sortieren, so dass Daten, die keine Hintergrundfarbe haben, kommen an den Anfang der Liste. (Die Daten enthalten ungefähr 10 000 Zeilen und 35 Spalten, basierend auf dem unten stehenden Code, wenn ich die blaue oder violette Farbe zuerst verwendet habe, funktioniert sie, aber sie funktioniert nicht für NO FILL. Ich habe 0 verwendet und auch verwendet . 16777215, aber kein Glück Was mache ich falsch PS:. ich keinen anderen VBA-Code für die nO FILL finden konnte xlNone oder vbWhite funktioniert auch nicht DankeVBA-Code zum Sortieren Spalte von 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

bearbeiten zu diesem ... nahm ich ein Makro, das mir diesen Code unter ub sortfun gab() ' ' sortfun Macro ' ' ActiveWorkbook.Worksheets ("Sheet1"). AutoFilter.Sort .SortFields.Clear ActiveWorkbook.Worksheets ("Sheet1") AutoFilter.Sort.SortFields.Add Key:. = Bereichs _ ("B1"), sortOn: = xlSortOnCellColor, Ordnung: = xlAscending, DataOption: = _ xlSortNormal Mit ActiveWorkbook.Worksheets ("Sheet1"). AutoFilter.Sort . Header = xlYes . MatchCase = Fa LSE .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With End Sub aber keine Arbeit – John

+0

ich es unter Sub sortfun() Dim sht auf diesen Code bearbeitet, um Arbeitsblatt Set sht = Worksheets (1) ' ' sortfun Macro ' ' sht.AutoFilter.Sort.SortFields.Clear sht.AutoFilter.Sort.SortFields.Add Key: = Bereich _ ("B1"), sortOn: = xlSortOnCellColor, Ordnung : = xlAscending, Datenoption: = _ xlSortNormal Mit sht.AutoFilter.Sort .header = xlYes .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With End Sub und ich bekomme Fehler 91 bei sht.AutoFilter.Sort.SortFields. Löschen, wenn ich alle Makros kombiniere. – John

Antwort

0

Um meine eigene Frage zu beantworten, musste ich nur die Farbe zuweisen, also habe ich sColor = 0 auskommentiert und sortOnValue.color = xlNone geändert, siehe den bearbeiteten Code unten.

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

Dies ist nur eine.. Vorschlag, da ich nicht wirklich weiß, wie man die "No Fill" -Zellen auf der Oberseite sortiert, aber warum färben Sie die "No Fill" -Zellen nicht zum Beispiel mit rot, und sortieren Sie dann nach Farbe? Sie können die Farbe bei Bedarf wiederherstellen oder bestimmte Werte basierend auf der Farbliste zuweisen und dann sortieren

+0

Oh nein, das wird nicht funktionieren, basierend auf den Daten und anderen Makros ... Cposiba Nastya. – John

+0

@John Könnten Sie das Bild Ihres Arbeitsblatts teilen? Und nenn mich nie Nastya. –

+0

Wie teile ich das Bild? und Sorry für den Namen, ich war ein Medizinstudent in Russland für 7 Jahre, meine Freunde, die Anastasiya sind, wurden Nastya, wie Tatyana namens Tanya usw. Ihr Name schlug eine ehemalige Sowjetunion Name warum. Nochmals Entschuldigung. – John

Verwandte Themen