2014-02-20 36 views
1

我继承了其上时运行的Excel 2007工作正常的Excel电子表格。问题在于电脑死机,新机器只有excel 2003 - 电子表格不再正常工作。问题在于vba代码中的“排序”功能。Excel 2007中的Excel 2003 VBA“排序”问题

我想知道,如果anyoe知道如果我可以改变它在2003年的Excel工作吗?我曾经看过类似的帖子,但我是一个总新手,当涉及到vba - 我只是寻找一个简单的“复制和粘贴”解决方案 - 用2003位代替2007位。 Everythig其他作品。

继承人的代码 -

'Sort by Class then by Entry No 
ActiveWorkbook.Worksheets("Competitor & Class Entry").Sort.SortFields.Clear 
ActiveWorkbook.Worksheets("Competitor & Class Entry").Sort.SortFields.Add Key _ 
    :=Range(ClassRange1), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption _ 
    :=xlSortNormal 
ActiveWorkbook.Worksheets("Competitor & Class Entry").Sort.SortFields.Add Key _ 
    :=Range("A9:A308"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption _ 
    :=xlSortNormal 
With ActiveWorkbook.Worksheets("Competitor & Class Entry").Sort 
    .SetRange Range("A9:AE308") 
    .Header = xlGuess 
    .MatchCase = False 
    .Orientation = xlTopToBottom 
    .SortMethod = xlPinYin 
    .Apply 
End With 

任何帮助,不胜感激! (连同如何将它!)

+0

我知道它的“Sorton”命令,在2003年不支持的代码基本上各种各样的竞争对手名单中,多数民众赞成对他们各自的类别中增加了一个新的排序函数,然后他们各自的参赛号码,因此我可以打印每个课程的开始列表。 – user3335033

回答

1

我的建议是对要排序和修改保存代码,以满足您的需求数据一旦使用宏录制。

0

不知道如果有需要,但3次中的代码,您使用范围,而不指定表:前

:=Range("A9:A308"), SortOn:= 

.SetRange Range("A9:AE308") 
.Add Key :=Range(ClassRange1) 

ActiveWorkbook.Worksheets("Competitor & Class Entry"). 

不管怎么说我已经重写的代码:

Dim Sh as worksheet 
set sh=ActiveWorkbook.Worksheets("Competitor & Class Entry") 

with Sh.Sort 
    with .SortFields 
     .Clear 
     .Add Key :=SH.Range(ClassRange1), SortOn:=xlSortOnValues, Order:=xlAscending, _ 
        DataOption :=xlSortNormal 
     .Add Key :=sh.Range("A9:A308"), SortOn:=xlSortOnValues, Order:=xlAscending, _ 
        DataOption :=xlSortNormal 
    end with 
    .SetRange sh.Range("A9:AE308") 
    .Header = xlGuess 
    .MatchCase = False 
    .Orientation = xlTopToBottom 
    .SortMethod = xlPinYin 
    .Apply 
End With 

set Sh=nothing 
+0

Brilliantr。感谢您的快速回复。我畏惧,我没有写代码 - 华中科技大学inhgerited的sorksheet所以不会再为范围未指定的表确定(我的VBA代码kmnowledge是灵长类动物的,至少可以说!)。我会尝试上述建议的代码,看看会发生什么... – user3335033

0

以下应该工作。我猜他们在Excel 2007

With ActiveWorkbook.Worksheets("Competitor & Class Entry") 
    .Range("A9:AE308").Sort Key1:=.Range(ClassRange1), Order1:=xlAscending, Key2:=.Range(_ 
     "A9:A308"), Order2:=xlAscending, Header:=xlGuess, _ 
     OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _ 
     DataOption1:=xlSortNormal, DataOption2:=xlSortNormal 
End With