Ich versuche eine Spalte in absteigender Reihenfolge zu sortieren. Der Code funktioniert einwandfrei, wenn ich durch es gehe, aber wenn das Makro vollständig ausgeführt wird, werden die Daten nicht sortiert. Ich kann nicht herausfinden, warum das passiert. Hier ist das Bit des Codes:VBA - absteigende Sortierung funktioniert nur beim Durchlaufen von Code
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
Offensichtlich ist dies nur ein Ausschnitt des gesamten Codes. Ich habe bereits bestätigt, dass lrow
und temp_str
korrekt berechnet werden. Außerdem habe ich beim Testen des Codes bestätigt, dass .Range(temp_str & "1:" & temp_str & lrow).Select
den gesamten Bereich erfasst, den ich sortieren möchte. Was könnte verhindern, dass der Code während einer vollständigen Ausführung des Makros funktioniert?
Um ein wenig mehr Kontext zu geben, wird das Sub (nennen wir es "DOX") zum Füllen der Datei/Sortieren der Spalte nur von einem anderen Sub aufgerufen (nennen wir es "Master"). Wenn ich den DOX-Sub-Befehl selbst ausführe, funktioniert die Sortierung einwandfrei. Ich benutze Excel 2010.
Ich testete den Code und läuft gut (mit Debugger und rannte alleine). Das einzige, woran ich denken kann, ist, wenn aus irgendeinem Grund Reste von einem anderen Sub übrig sind (da du sagst, dass es heißt). Ein Autofilter, der möglicherweise interferiert (setzen .AutoFilterMode = False nach. Activate DOX_ws Blatt) oder Blattschutz für Filter. – Sgdva
Versuchen Sie, die 'Zellen' in 'ConvertToLetter' zu' teilen'? – findwindow
Kein Glück auf '.AutoFilterMode = False', immer noch unsortiert, wenn der Master-Sub-Befehl ausgeführt wird. Die "ConvertToLetter" -Funktion funktioniert einwandfrei - sie gibt zurück, was erwartet wird ("K" in diesem Fall). – kschindl