我尝试按降序对列进行排序。当我单步执行代码时,代码工作得很好,但是当宏完全运行时,数据不会被排序。我无法弄清楚为什么会这样。这是代码:
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
显然,这只是整个代码的一小部分。我们已经确认lrow
和temp_str
已正确计算。此外,在测试代码时,我确认.Range(temp_str & "1:" & temp_str & lrow).Select
抓住了我想要排序的全部范围。什么可以阻止代码在宏的完整运行期间工作?
为了给出更多的上下文,sub(让我们称之为" DOX")来填充文件/排序列只能从不同的子句中调用(让我们这样做)称之为" Master")。当我自己运行DOX子时,排序完美。我正在使用Excel 2010。
答案 0 :(得分:2)
我找到了解决方案。如果我将范围更改为.Range("A1:" & temp_str & lrow).Sort
,那么它可以正常工作。我想它需要整个数据范围来执行排序;只是给它一栏不够,显然。