Zwei Prozeduren mit Sortierungsanweisung
19.02.2017 16:36:27
Sascha
ich stolpere aktuell über das Problem, dass ich partou keine zwei Sortierungsanweisungen in meinem Projekt nutzen kann.
Ich habe ursprünglich innerhalb einer Prozedur zwei verschiedene Worksheets angesteuert, ggf. einen Wert in der ersten Spalte hinzugefügt und anschließend den Bereich der ersten Spalte des jeweiligen Sheets neu sortieren lassen.
Wenn ich nur eine der Sortierungsanweisungen benutze und die andere auskommentiere, funktioniert alles wunderbar. Beide funktionieren aber nicht... Mittlerweile habe ich beide Anweisungsabfolgen schon in einzelne Prozeduren überführt und die Sortierungsanweisungen auf das Minimum gekürzt. Dennoch knappt es einfach nicht. Ich bekomme beim Ausführen immer den Fehler:
"Die Sort-Methode des Range-Objektes konnte nicht ausgeführt werden." - Laufzeitfehler 1004
Vielleicht habt ihr ja eine Idee, was die Ursache sein könnte? Danke schonmal für eure Ideen =)
Hier die beiden Prozeduren (die MessageBoxes sind nur für mich zur Fehlerfindung, auch wenn sie nichts gebracht haben ^^):
Private Sub ZutatenNeueZutat()
'Worksheet setzen
Set WS_Zutaten = ActiveWorkbook.Worksheets("Zutaten")
'Letzte befüllte Zeile finden
VarZutatenMax = WS_Zutaten.Range("A500").End(xlUp).Row
'Prüfung ob Zutat bereits gelistet
VarX = 1
VarY = False
For VarX = 1 To VarZutatenMax
If WS_Zutaten.Cells(VarX, 1).Value = UF_NeuesRezept.Controls.Item("Zutat" & VarZeile). _
Value Then
MsgBox ("Zutat " & UF_NeuesRezept.Controls.Item("Zutat" & VarZeile).Value & " _
bereits eingetragen: " & VarX)
VarY = True
VarX = VarZutatenMax
End If
Next
'Zutat anfügen, wenn noch nicht vorhanden; dann neu sortieren
If VarY = False Then
MsgBox ("Zutat " & UF_NeuesRezept.Controls.Item("Zutat" & VarZeile).Value & " noch _
nicht vorhanden: " & VarX)
WS_Zutaten.Cells(VarX, 1).Value = UF_NeuesRezept.Controls.Item("Zutat" & VarZeile). _
Value
WS_Zutaten.Range("A1:A" & VarZutatenMax + 1).Sort Order1:=1
End If
End Sub
Private Sub EinheitenNeueEinheit()
'Worksheet setzen
Set WS_Einheiten = ActiveWorkbook.Worksheets("Einheiten")
'Letzte befüllte Zeile finden
VarEinheitenMax = WS_Einheiten.Range("A25").End(xlUp).Row
'Prüfung ob Einheit bereits gelistet
VarX = 1
VarY = False
MsgBox ("VarEinheitenMax: " & VarEinheitenMax & " - VarX: " & VarX & " - VarY: " & VarY)
For VarX = 1 To VarEinheitenMax
If WS_Einheiten.Cells(VarX, 1).Value = UF_NeuesRezept.Controls.Item("Einheit" & _
VarZeile).Value Then
MsgBox ("Einheit " & UF_NeuesRezept.Controls.Item("Einheit" & VarZeile).Value & " _
bereits eingetragen: " & VarX)
VarY = True
VarX = VarEinheitenMax
End If
Next
'Einheit anfügen, wenn noch nicht vorhanden; dann neu sortieren
If VarY = False Then
MsgBox ("Einheit " & UF_NeuesRezept.Controls.Item("Einheit" & VarZeile).Value & " noch _
nicht vorhanden: " & VarX)
WS_Einheiten.Cells(VarX, 1).Value = UF_NeuesRezept.Controls.Item("Einheit" & VarZeile). _
Value
WS_Einheiten.Range("A1:A" & VarEinheitenMax + 1).Sort Order1:=1
End If
End Sub