Hallo,
mir wurde hier vor einiger Zeit bei einer Tabellenerstellung geholfen, indem dann VBA-Codes eingebaut wurden (Reinhard!). Diese Tabelle benötige ich nun erneut für das Jahr 2012. Ich habe sie daher unter einem neuen Dateinahmen abgespeichert aber sonst nix verändert. Aber nun funktioniert einer von den VBA-Codes nicht mehr. Die anderen laufen aber ohne Probleme. Die Meldung bei dem nicht funktionierenden Code lautet:
Laufzeitfehler 424
Objekt erforderlich
Es geht hierbei um eine Liste, die (als neues Tabellenblatt) alphabetisch neu sortiert wird.
Könnt ich mir sagen, was dieser Fehlercode bedeutet.
Als Hilfe auch nachfolgend noch der Code:
Sub ListeNeuSortieren()
Dim wks1 As Worksheet
Set wks1 = Worksheets(„Nachweis_Antragspersonen“)
With Worksheets(„Nachw_AntrP_sortiert!“).Range(„A5:J999“).ClearContents
wks1.Unprotect
wks1.Range(„A5:J“ & wks1.UsedRange.SpecialCells(xlCellTypeLastCell).Row).Copy
.Range(„A5“).PasteSpecial Paste:=xlValues, Operation:=xlNone
wks1.Protect
With .Range(„A5:J“ & .UsedRange.SpecialCells(xlCellTypeLastCell).Row)
.Value = .Value
.Sort Key1:=.Range(„A5“), Order1:=xlAscending, Key2:=.Range(„D5“) _
, Order2:=xlAscending, Header:=xlNo, OrderCustom:=6, MatchCase:= _
False, Orientation:=xlTopToBottom
End With
.Activate
.Range(„A5“).Select
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
End With
End Sub
Hoffe, ihr könnt mir noch einmal schnell helfen… 
Besten Dank.
VB-Laie
mir wurde hier vor einiger Zeit bei einer Tabellenerstellung
geholfen, indem dann VBA-Codes eingebaut wurden (Reinhard!).
Diese Tabelle benötige ich nun erneut für das Jahr 2012. Ich
habe sie daher unter einem neuen Dateinahmen abgespeichert
aber sonst nix verändert. Aber nun funktioniert einer von den
VBA-Codes nicht mehr. Die anderen laufen aber ohne Probleme.
Die Meldung bei dem nicht funktionierenden Code lautet:
Laufzeitfehler 424
Objekt erforderlich
Hallo KK,
Select benutze ich nur in den seltenen Fällen wo man es machen muß.
Ich kann mir gar nicht vorstellen daß Code mit
.Range(„A5“).Select
von mir stammt.
Außer ich hab damals nur den vorhandenen Code zum Laufen gebracht
ohne auf Details einzugehen.
Oder aber du wolltest A5 markiert haben denn von dem gezeigten Code
her ist es nicht notwendig sie zu markieren/selektieren.
Ist aber alles egal.
In welcher Codezeile geschieht denn der Fehler?
Gruß
Reinhard
Ah, hallo Reinhard,

Ich kann mir gar nicht vorstellen daß Code mit
.Range(„A5“).Select
von mir stammt.
Außer ich hab damals nur den vorhandenen Code zum Laufen
gebracht
ohne auf Details einzugehen.
Oder aber du wolltest A5 markiert haben denn von dem gezeigten
Code
her ist es nicht notwendig sie zu markieren/selektieren.
Ja und nein. Ich wollte die neue Sortierung über ein Makro lösen. Das klappte dann nicht so richtig und dann hast du mir daraus wahrscheinlich den Code gebastelt.
Ist aber alles egal. …Egal ist 88!
In welcher Codezeile geschieht denn der Fehler?
Der Fehler passiert aber schon weiter oben, Zeile 7(?):
.Range(„A5“).PasteSpecial Paste:=xlValues, Operation:=xlNone
Gruß
KK
Hallo,
der Code ist aber ganz schön durcheinander. Und das soll schon mal funktioniert haben? Falls ja, weiß aber auch niemand warum.
Der Fehler passiert aber schon weiter oben, Zeile 7(?):
.Range(„A5“).PasteSpecial Paste:=xlValues, Operation:=xlNone
Kein Wunder das VBA meckert. An dieser Stelle soll in Zelle A5 ein Wert eingefügt werden. VBA weiß nur nicht auf welches Worksheet (Objekt) sich dieser Befehl bezieht. Deshalb kann der Befehl nicht ausgeführt werden.
Ich würde mir noch mal das ursprüngliche VBA-Skript anschauen! Die Verwendung von With sieht in meinen Augen ziemlich wirr aus. An der ursprünglichen Version wurde sicher im Nachhinein etwas geändert.
Schau doch mal in die 4. Zeile!
With Worksheets(„Nachw_AntrP_sortiert!“).Range(„A5:J999“).ClearContents
Versuchs mal mit:
With Worksheets(„Nachw_AntrP_sortiert!“)
.Range(„A5:J999“).ClearContents
MfG
Stephan
Hallo Stephan,
vielen Dank für deine Antwort. 
Schau doch mal in die 4. Zeile!
With
Worksheets(„Nachw_AntrP_sortiert!“).Range(„A5:J999“).ClearConte
nts
Versuchs mal mit:
With Worksheets(„Nachw_AntrP_sortiert!“)
.Range(„A5:J999“).ClearContents
Aha, okay! Das funktioniert! Vielleicht hat sich durch das „Debuggen“ tatsächlich etwas in dieser Richtung verschoben. Nun funktioniert es zwar wieder, aber nur wenn ich manuell den Blattschutz entferne. Ursprünglic sollte der Code das auch übernehmen, so wie aufgeführt. Muss diese Zeile dann vielleicht noch an eine andere Stelle verschoben werden ??
VG
Kerstin
With Worksheets(„Nachw_AntrP_sortiert!“)
.Range(„A5:J999“).ClearContents
Aha, okay! Das funktioniert! Vielleicht hat sich durch das
„Debuggen“ tatsächlich etwas in dieser Richtung verschoben.
Nun funktioniert es zwar wieder, aber nur wenn ich manuell den
Blattschutz entferne. Ursprünglic sollte der Code das auch
übernehmen, so wie aufgeführt. Muss diese Zeile dann
vielleicht noch an eine andere Stelle verschoben werden ??
Hallo Kerstin,
probiere es mal so:
Sub ListeNeuSortieren()
Dim wks1 As Worksheet
Set wks1 = Worksheets("Nachweis\_Antragspersonen")
With Worksheets("Nachw\_AntrP\_sortiert!").Range("A5:J999")
.Unprotect
.ClearContents
wks1.Unprotect
wks1.Range("A5:J" & wks1.UsedRange.SpecialCells(xlCellTypeLastCell).Row).Copy
.Range("A5").PasteSpecial Paste:=xlValues, Operation:=xlNone
wks1.Protect
With .Range("A5:J" & .UsedRange.SpecialCells(xlCellTypeLastCell).Row)
.Value = .Value
.Sort Key1:=.Range("A5"), Order1:=xlAscending, Key2:=.Range("D5") \_
, Order2:=xlAscending, Header:=xlNo, OrderCustom:=6, MatchCase:= \_
False, Orientation:=xlTopToBottom
End With
.Activate
.Range("A5").Select
.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
End With
End Sub
Gruß
Reinhard
Hallo Reinhard,
hab’s grad mal ausprobiert. Bei diesem Code hängt er in Zeile 5 bei
.Unprotect
und gibt mir die Meldung
„Laufzeitfehler '438:
Objekt unterstützt diese Eigenschaft oder Methode nicht.“
Ich habe es unter Excel 2007 ausprobiert.
Schade. Hast du noch eine Idee??
VG
Kerstin
hab’s grad mal ausprobiert. Bei diesem Code hängt er in Zeile
5 bei
.Unprotect
Hallo Kerstin,
mein Fehler, nimm das bitte:
.Parent.Unprotect
Gruß
Reinhard
Das funzt. Danke dafür. Aber leider, leider … (wär ja auch zu schön): Nun hab’ ich hier den Hänger. 
With .Range(„A5:J“ & .UsedRange.SpecialCells(xlCellTypeLastCell).Row)
Gn8
With .Range(„A5:J“ &
.UsedRange.SpecialCells(xlCellTypeLastCell).Row)
Hallo Kerstin,
okay, hier folgt neuer Code, mal schauen was ich da wieder übersehen
habe 
Sub ListeNeuSortieren()
Dim wks1 As Worksheet
Set wks1 = Worksheets("Nachweis\_Antragspersonen")
With Worksheets("Nachw\_AntrP\_sortiert!")
.Unprotect
.Range("A5:J999").ClearContents
wks1.Unprotect
wks1.Range("A5:J" & wks1.UsedRange.SpecialCells(xlCellTypeLastCell).Row).Copy
.Range("A5").PasteSpecial Paste:=xlValues, Operation:=xlNone
wks1.Protect
With .Range("A5:J" & .UsedRange.SpecialCells(xlCellTypeLastCell).Row)
.Value = .Value
.Sort Key1:=.Range("A5"), Order1:=xlAscending, Key2:=.Range("D5") \_
, Order2:=xlAscending, Header:=xlNo, OrderCustom:=6, MatchCase:= \_
False, Orientation:=xlTopToBottom
End With
.Activate
.Range("A5").Select
.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
End With
End Sub
Gut’s Nächtle
Reinhard
Guten Morgen, Reinhard,
schläfst du auch mal ??
Aber super! Ich habe mal schnell ausprobiert. Es klappt einwandfrei!! Vielen lieben Dank wieder einmal.
Ich hoffe, es kommen keine neuen Problemchen… 
Wünsche einen schönen Tag.
Kerstin