xlj310 发表于 2013-5-25 11:13:08

Excel宏排序代码转换为Au3--Excel没有反映啊!

本帖最后由 xlj310 于 2013-5-25 11:16 编辑

表格以包含标题按B列进行升序排序的操作的宏代码如下:Sub 宏1()
    Range("B1").Select
    ActiveWorkbook.Worksheets("分析表").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("分析表").Sort.SortFields.Add Key:=Range("B2:B4"), _
      SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    With ActiveWorkbook.Worksheets("分析表").Sort
      .SetRange Range("A1:D4")
      .Header = xlYes
      .MatchCase = False
      .Orientation = xlTopToBottom
      .SortMethod = xlPinYin
      .Apply
    End With
End Sub
转换成Au3的代码是:

$oExcel.ActiveSheet.Range("B1").Select
        $oExcel.ActiveSheet.Sort.SortFields.Clear
       
        With $oExcel.ActiveSheet.Sort.SortFields.Add
                .Key=$oExcel.ActiveSheet.Range("B2:B4")
                .SortOn=0
                .Order=1
                .DataOption=0
        EndWith

        With $oExcel.ActiveSheet.sort
                .SetRange($oExcel.ActiveSheet.Range("A1:D4"))
                .Header = 1
                .MatchCase = False
                .Orientation = 1
                .SortMethod = 1
                .Apply
        EndWith

但如此转换之后,Excel只有第一句代码的操作是起作用的,其他代码都没有反应。 请问:在Excel中的宏Sort方法该怎么转换成Au3代码呢?在论坛里搜索了半天,没有找到类似的sort帖子!

当然,折中办法是把Excel表格读取到数组里,排序后再写回Excel中,但我希望直接操作Sort方法来完成,这样的效果要好一些!

xlj310 发表于 2013-5-25 13:01:31

$oExcel.Range("$A$1:$H$"&$lastRow).Sort ($oExcel.Range("B2:B$"&$lastRow), 1, $oExcel.Range("a2:a$"&$lastRow), Default, 2, $oExcel.Range("c2:c$"&$lastRow), 2, 1, True, 1, 1, Default, 0)用这个可以实现{:face (125):}
页: [1]
查看完整版本: Excel宏排序代码转换为Au3--Excel没有反映啊!