1

我有一个 excel 电子表格,其中有一列的公式=IF(L2=N2, IF(N2>0,TRUE, FALSE), FALSE)为我提供了 True 或 False 值。如果我在 excel 中打开此电子表格并按升序对列进行排序,则它会正确排序。录制返回的宏如下。

ActiveWorkbook.Worksheets("Incorrect Items").AutoFilter.Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Incorrect Items").AutoFilter.Sort.SortFields.Add _
    Key:=Range("X1:X2188"), SortOn:=xlSortOnValues, Order:=xlAscending, _
    DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Incorrect Items").AutoFilter.Sort
    .Header = xlYes
    .MatchCase = False
    .Orientation = xlTopToBottom
    .SortMethod = xlPinYin
    .Apply
End With

当我将其转移到访问权限时,我有。

With WorkSheet
    .AutoFilter.Sort.SortFields.Clear
    .AutoFilter.Sort.SortFields.add _
        Key:=.range("X1:X2188"), SortOn:=0, Order:=1, DataOption:=0   
    With .AutoFilter.Sort
        .Header = 1
        .MatchCase = False
        .Orientation = 1
        .SortMethod = 1
        .Apply
    End With
End With

代码运行良好,没有返回错误,但它似乎忽略了xlSortOnValues常量并且不对列进行排序。在排序之前复制和粘贴值,但我想知道为什么这在 excel 中有效,而不是通过访问。

4

2 回答 2

1

当从 MS Access 自动化 MS Excel 并处理公式时,例如对具有从公式创建的值的列进行排序或从公式复制总和结果时,必须将计算设置为自动以观察正确的结果appExcel.Application.Calculation = -4105

于 2013-07-09T15:30:14.717 回答
1

xlSortOnValues在所有 Excel 版本中的处理方式不同,因此请确保您有正确的库处于活动状态(VBA 编辑器中的对象引用)。

于 2013-07-04T20:44:36.920 回答