简体   繁体   English

VBA 自动过滤表名称

[英]VBA Autofilter Sheet Name

When applying the macro auto filter, we would like to make it work on the sheet we are currently working on regardless of the sheet.应用宏自动过滤器时,我们想让它在我们当前正在处理的工作表上工作,而不考虑工作表。

ActiveWorkBook.Worksheets("sheetname").Sheet.AutoFilter.Sort.SortFields.Clear

-> I changed to - >我改为

ActiveSheet.AutoFilter.Sort.SortFields.CLEAR

but it does not work.但它不起作用。

Sub Name()
    
    Application.ScreenUpdating = False
    Cells.Select
    Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
        
    With Application.ReplaceFormat.Interior
        .PatternColorIndex = xlAutomatic
        .Color = 65535
        .TintAndShade = 0
        .PatternTintAndShade = 0
    End With
    
    Cells.Replace What:="#N/A", Replacement:="#N/A", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=True
        
    ActiveSheet.AutoFilter.Sort.SortFields.CLEAR
    ActiveSheet.AutoFilter.Sort.SortFields.Add(Range( _
        "F1:F2000"), xlSortOnCellColor, xlAscending, , xlSortNormal).SortOnValue.Color = RGB( _
        255, 255, 0)

        
    With ActiveSheet.AutoFilter.Sort
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
    
    ActiveSheet.Range("$A$1:$S$2000").AutoFilter Field:=6, Criteria1:=RGB(255, _
        255, 0), Operator:=xlFilterCellColor
        
    Range("C2").Select
    Range(Selection, Selection.End(xlDown)).Select
    Application.CutCopyMode = False
    Selection.Copy
    Range("T2").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Range("T2").Select
    Application.CutCopyMode = False
    
    ActiveWorkSheet.Range("$A$1:$S$2000").AutoFilter Field:=6
    Application.CutCopyMode = False
    ActiveSheet.AutoFilter.Sort.SortFields.CLEAR
    ActiveSheet.AutoFilter.Sort.SortFields.Add(Range( _
        "L1:L2000"), xlSortOnCellColor, xlAscending, , xlSortNormal).SortOnValue.Color _
        = RGB(255, 255, 0)
        
    With ActiveSheet.AutoFilter.Sort
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
    
    ActiveSheet.Range("$A$1:$S$2000").AutoFilter Field:=12, Criteria1:=RGB(255, _
        255, 0), Operator:=xlFilterCellColor
        
    Range("I2").Select
    Range(Selection, Selection.End(xlDown)).Select
    Application.CutCopyMode = False
    Selection.Copy
    Range("U2").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Range("U2").Select
    Application.CutCopyMode = False
    
    ActiveSheet.Range("$A$1:$S$2000").AutoFilter Field:=12
    Columns("T:U").Select
    Application.ReplaceFormat.CLEAR
    
    With Application.ReplaceFormat.Font
        .Subscript = False
        .TintAndShade = 0
    End With
    
    With Application.ReplaceFormat.Interior
        .PatternColorIndex = xlAutomatic
        .Color = 65535
        .TintAndShade = 0
        .PatternTintAndShade = 0
    End With
    
    Selection.Replace What:="_1", Replacement:="", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
    Range("A2").Select
    Range(Selection, Selection.End(xlDown)).Select
    Application.CutCopyMode = False
    Selection.Copy

    Range("M2").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Range("M2").Select
    Application.CutCopyMode = False
    ActiveCell.FormulaR1C1 = "=COUNTIF(C[7]:C[8],RC[-11])"
    Range("M2").Select
    Selection.Copy
    Range(Selection, Selection.End(xlDown)).Select
    ActiveSheet.Paste
    Cells.Select
    Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    
    
End Sub

Try this:尝试这个:

Dim Nome_Planilha As String

Nome_Planilha = ActiveSheet.Name

ActiveWorkbook.Worksheets(Nome_Planilha).AutoFilter.Sort.SortFields.Clear
ActiveWorkbook.Worksheets(Nome_Planilha).AutoFilter.Sort.SortFields.Add Key:= _
    Range("A1:A872"), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption _
    :=xlSortNormal
With ActiveWorkbook.Worksheets(Nome_Planilha).AutoFilter.Sort
    .Orientation = xlTopToBottom
    .Apply
End With

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM