VBA - 仅在逐步执行代码时降序排序

时间:2016-06-09 18:16:12

标签: excel vba excel-vba sorting

我尝试按降序对列进行排序。当我单步执行代码时,代码工作得很好,但是当宏完全运行时,数据不会被排序。我无法弄清楚为什么会这样。这是代码:

Dim temp_str as String
Dim lrow as Long
Dim DOX_Net_Lvl_Col_Loc as Long
Dim DOX_ws as WorkSheet
Set DOX_ws = ThisWorkbook.Sheets("DOX")

' Sort Netting Level in descending order
With DOX_ws
    .Activate
    temp_str = ConvertToLetter(DOX_Net_Lvl_Col_Loc)
    .Range(temp_str & "1:" & temp_str & lrow).Sort _
       Key1:=.Range(temp_str & "1"), Order1:=xlDescending
End With

Function ConvertToLetter(ColNo As Long) As String
    ConvertToLetter = Split(Cells(, ColNo).Address, "$")(1)
End Function

显然,这只是整个代码的一小部分。我们已经确认lrowtemp_str已正确计算。此外,在测试代码时,我确认.Range(temp_str & "1:" & temp_str & lrow).Select抓住了我想要排序的全部范围。什么可以阻止代码在宏的完整运行期间工作?

为了给出更多的上下文,sub(让我们称之为" DOX")来填充文件/排序列只能从不同的子句中调用(让我们这样做)称之为" Master")。当我自己运行DOX子时,排序完美。我正在使用Excel 2010。

1 个答案:

答案 0 :(得分:2)

我找到了解决方案。如果我将范围更改为.Range("A1:" & temp_str & lrow).Sort,那么它可以正常工作。我想它需要整个数据范围来执行排序;只是给它一栏不够,显然。