Warum funktioniert Sheets(m).Range nicht

Hallo

unter Excel 2010 habe ich ein Makro, welches Inhalte aus 26 Tabellenblättern löschen soll. Dazu zähle ich vorher, wieviel Zeilen (ab Zeile 6) Inhalte haben.
Der Code ist:

For m = 6 To Anz - 2 'ab Tabellenblatt „10“ bis Blatt inkl. Blatt „99“
'Ermitteln der letzten Textzeile
i = 6
While Not IsEmpty(Sheets(m).Cells(i, 1))
i = i + 1
Wend
Sheets(m).Range(„A6:H“ & i).Select
If Sheets(m).Name = „99“ Then Sheets(m).Range(„A7:H“ & i).Select
Selection.ClearContents 'Inhalt des Tabellenblattes ist gelöscht
Next m 'Inhalte aller Tabellenblätter gelöscht

Bei der Select-Anweisung Sheets(m).Range(…) meckert das Programm, der Select-Befehl könne nicht ausgeführt werden.

Ändere ich den Befehl um in
Sheets(m).Select
Range(„A6:H“ & i).Select

dann funktioniert es! ABER: wenn das Tabellenblatt „99“ heißt, dann soll ab A7 selektiert werden. Dort steht die gleiche Anweisung (nur mit A7), dort meckert das Programm nicht, sondern führt den Befehl aus.

Was habe ich falsch gemacht?

Gruß
Pauli

Grüezi Pauli

Sheets(m).Range(„A6:H“ & i).Select

Bei der Select-Anweisung Sheets(m).Range(…) meckert das
Programm, der Select-Befehl könne nicht ausgeführt werden.

Ja, das ist korrekt - selektiert werden kann nur auf dem aktiven Tabellenblatt und das dürfte bei der Ausführung deines Codes nicht das Blatt dessen Name in der Variablen ‚m‘ enthalten ist gegeben sein.

Ändere ich den Befehl um in
Sheets(m).Select
Range(„A6:H“ & i).Select

dann funktioniert es!

Ja, weil Du eben vorher das betreffende Tabellenblatt selektiert und somit zum aktiven Tabellenblatt gemacht hast.

Was habe ich falsch gemacht?

Grundsätzlich ‚falsch‘ ist, dass Du überhaupt selektierst - das ist in >99% aller Fällt nicht notwendig.
Das könnte für deinen Code dann wie folgt aussehen:

For m = 6 To Anz - 2 
 i = 6
 While Not IsEmpty(Sheets(m).Cells(i, 1))
 i = i + 1
 Wend
 If Sheets(m).Name "99" Then
 Sheets(m).Range("A6:H" & i).ClearContents
 Else
 Sheets(m).Range("A7:H" & i).ClearContents
 End If
 Next m

Mit freundlichen Grüssen

Thomas Ramel

  • MVP für MS-Excel -

Hallo Thomas,

in der Einfachheit liegt die Kunst. Wenn ich Deinen Code lese, schlage ich mir vor die Stirn und denke, warum ich nicht darauf gekommen bin!

Danke für die Hilfe
Gruß
Pauli

Grüezi Pauli

in der Einfachheit liegt die Kunst. Wenn ich Deinen Code lese,
schlage ich mir vor die Stirn und denke, warum ich nicht
darauf gekommen bin!

Mach dir keinen Kopf deswegen - in aller Regel zeichnet der Makro-Recorder genau so auf, wie Du das übernommen hast. Der kann halt nichts anderes… :wink:

Mit freundlichen Grüssen

Thomas Ramel

  • MVP für MS-Excel -