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