VBA Fehlercode 424

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… :wink:
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,
:wink:

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. :smile:

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. :frowning:

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 :frowning:

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 ?? :wink: Aber super! Ich habe mal schnell ausprobiert. Es klappt einwandfrei!! Vielen lieben Dank wieder einmal.
Ich hoffe, es kommen keine neuen Problemchen… :wink:

Wünsche einen schönen Tag.

Kerstin