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方法来完成,这样的效果要好一些! $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]