Ich versuche gerade, einen Code auf VBA zu erstellen, der meine Werte in aufsteigender Reihenfolge sortiert. Nachdem mein Programm den Minimalwert gefunden hat und es zu einer anderen Spalte der Spalte "B" hinzufügt, wollte ich die Zelle des Minimums verschwinden lassen, um mein neues Minimum zu finden und es in die Spalte "B" direkt unter dem Anfangswert einzugeben . Hier ist mein Code. Aus irgendeinem Grund löscht es die Zelle nicht und gibt mir einen "Objekt erforderlicher Fehler". Bitte helfenSortierung in aufsteigender Reihenfolge, indem der Minimalwert jedes Mal gelöscht wird, wenn die Schleife das nächste Minimum findet
Option Explicit
Sub decreasing()
Dim a As Range, b As Range
Dim i As Integer
Dim n As Long
Dim minimum As Long
n = Sheet1.Cells(Rows.Count, 1).End(xlUp).Row
i = 1
While Cells(i, "A") <> ""
i = i + 1
For i = 1 To n
Set a = Range(Cells(1, "A"), Cells(n, "A"))
Cells(i, "B") = Application.WorksheetFunction.Min(a)
Application.Min(a).Cells.Delete
Next i
Wend
End Sub
'Min()' gibt einen Wert zurück, kein Bereichsobjekt. Sie müssen Find() oder Match() verwenden, um die Zelle mit dem Minimum-Wert zu suchen und dann zu löschen. Sie könnten es einfacher finden, 'Application.Small (a, i)' in Ihrer Schleife zu verwenden: Sie müssten dann nicht die Zellen löschen, die Sie bereits kopiert haben. –
Sie sollten auch entscheiden, ob Sie die früh gebundene 'Application.WorksheetFunction.Min' oder die spät gebundene' Application.Min'Funktion verwenden möchten. Konsistenz bitte! –
Willkommen bei Stack Overflow! Es sieht so aus, als müssten Sie lernen, einen Debugger zu verwenden. Bitte helfen Sie sich selbst [https://ericlippert.com/2014/03/05/how-to-debug-small-programs/]. Wenn Sie danach noch Probleme haben, können Sie gerne weitere Einzelheiten erfahren. –