在sorting代码中使用图表代号

我一直在试图写代码的所有代码,以防止错误,如果名称被改变,并停止激活/select表。 这一直很顺利,直到我到了sorting代码,我认为以下selectSheet2

 ActiveWorkbook.Sheets(2).Sort.SortFields.Clear ActiveWorkbook.Sheets(2).Sort.SortFields.Add Key:=Range( _ "A2:A" & LastRow), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _ xlSortNormal ActiveWorkbook.Sheets(2).Sort.SortFields.Add Key:=Range( _ "J2:J" & LastRow), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _ xlSortNormal With ActiveWorkbook.Sheets(2).Sort .SetRange Range("A1:J" & LastRow) .Header = xlYes .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With 

它实际上在Sheet2上工作,但是在添加一个新的表单后,我发现它是根据它们在文档中的位置(底部的标签)对表单进行计数。

尝试用ActiveWorkbook.Sheet2.Sort.SortFields.Clear东西replace任何这些行给我错误“438 – 对象不支持此属性或方法”。

我已经能够得到这个工作的唯一方法是用ActiveWorkbook.Sheets(Sheet2.Name).Sort.SortFields.Clearreplace它。 在我看来,也许我在这里失去了一些东西,但我无法search任何与代号和sorting相关的东西。

只需使用代码名称将表单分配给一个variables:

 Dim ws As Worksheet Set ws = Sheet2 

然后你会打电话给每一行:

 ws.Sort... 

使用工作表名称而不是索引,如下所示:

 ActiveWorkbook.Sheets("Sheet2").Sort.SortFields.Clear 

只要工作表名称不更改,这将起作用。