VBA – 降序sorting仅适用于单步执行代码

我正在尝试按降序对列进行sorting。 当我遍历它时代码工作得很好,但是当macros完全运行时,数据不会被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是正确计算的。 此外,在testing代码时,我确认.Range(temp_str & "1:" & temp_str & lrow).Select我想要sorting的全部范围。 什么可以防止在macros的全面运行的代码工作?

为了给予更多的上下文,sub(我们称之为“DOX”)来填充文件/对列进行sorting只是从一个不同的子(我们称之为“Master”)调用。 当我自己运行DOX sub时,sorting完美。 我正在使用Excel 2010。

我想出了一个解决scheme。 如果我将范围更改为.Range("A1:" & temp_str & lrow).Sort ,那么它的工作原理。 我想它需要整个范围的数据进行sorting; 只是给它列是不够的,显然。