Excel vb错误:编译错误使用属性无效

我有一个会计系统,从SQL数据库中创build一个报告,它将报告数据放在工作表1(报告)上,并将报告参数报告在工作表2上。我需要sorting数据,并在会计系统完成转储时隐藏几列

在sheet1上,我把下面的代码

Private Sub Worksheet_Change(ByVal Target As Range) Sort HideExtraFields End Sub 

在module1中

  Sub Sort() Selection.AutoFilter ActiveWorkbook.Worksheets("Report").AutoFilter.Sort.SortFields.Clear ActiveWorkbook.Worksheets("Report").AutoFilter.Sort.SortFields.Add Key:=Range _ ("E2"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _ xlSortTextAsNumbers ActiveWorkbook.Worksheets("Report").AutoFilter.Sort.SortFields.Add Key:=Range _ ("D2"), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:= _ xlSortNormal With ActiveWorkbook.Worksheets("Report").AutoFilter.Sort .Header = xlYes .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With Selection.AutoFilter End Sub Sub HideExtraFields() Columns("AA:AE").Select Selection.EntireColumn.Hidden = True End Sub 

如果我将sheet1上的代码移动到ThisWorkbook,我得到的错误仍然是在sheet2上抛出参数

 Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range) Sort HideExtraFields End Sub 

你只是sorting, AutoFilter不需要sorting; 放下它,并放弃使用危险的Selection东西。 试试这种方式。

最好,我将把所有的工作表报告的代码模块

 ' Code Module of the worksheet Report Option Explicit Private Sub Worksheet_Change(ByVal Target As Range) SortMe HideExtraFields End Sub Sub SortMe() With Me.Sort.SortFields .Clear .Add Key:=Me.Range("E2"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortTextAsNumbers .Add Key:=Me.Range("D2"), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal End With With Me.Sort .Header = xlYes .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .SetRange Me.UsedRange .Apply End With End Sub Sub HideExtraFields() Me.Columns("AA:AE").Hidden = True End Sub