Anzeige
Archiv - Navigation
1208to1212
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Warum (t)rödelt der Code so ...

Warum (t)rödelt der Code so ...
Mandy
Hallo
ich möchte mit folgendem Code alle Tabellenblätter mit "Detail" durchlaufen und dabei alle AutoFormen, die sich darauf befinden entfernen, Zeilenhöhe stellen und zwei ausgebelendetet Spalten einblenden.
Doch der Code rödelt vor sich hin, wenn man ihn nicht abbricht, kann es bis zu 10 Minuten dauern, bis er fertig ist oder man bricht vorher ab.
Kann jamand sehen, ob ich da unfreiwillig sowas wie eine Schleife eingebaut habe ?
Danke:
Sub Zurücksetzen()
Dim Blatt As Worksheet
Dim x As Long, z As Long, Loletzte As Long
Dim shp As Shape
Application.ScreenUpdating = False
For Each Blatt In Sheets
If Left(Blatt.Name, 6) = "Detail" Then
Blatt.Select
Loletzte = Blatt.Cells(Rows.Count, 2).End(xlUp).Row
z = 1
For x = 2 To Loletzte
Blatt.Rows("7:" & Loletzte).Select
Selection.ClearContents
For Each shp In ActiveSheet.Shapes
If Not Intersect(shp.TopLeftCell, Selection) Is Nothing Then shp.Delete
Selection.RowHeight = 12.75
Columns("F:G").EntireColumn.Hidden = False
Next
Next
End If
Next
Application.ScreenUpdating = True
End Sub

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Warum (t)rödelt der Code so ...
19.04.2011 15:09:51
Hajo_Zi
Hallo Mandy,
verzichte auf seect und Activate das ist zu 99,9% nicht notwendig.
Option Explicit
Sub Zurücksetzen()
Dim Blatt As Worksheet
Dim x As Long, z As Long, Loletzte As Long
Dim shp As Shape
Application.ScreenUpdating = False
For Each Blatt In Sheets
If Left(Blatt.Name, 6) = "Detail" Then
With Blatt
Loletzte = .Cells(Rows.Count, 2).End(xlUp).Row
z = 1
.Rows("7:" & Loletzte).ClearContents
.Rows("7:" & Loletzte).RowHeight = 12.75
.Columns("F:G").EntireColumn.Hidden = False
For x = 2 To Loletzte
For Each shp In .Shapes
If Not Intersect(shp.TopLeftCell, Selection) Is Nothing Then shp.Delete
Next
Next
End With
End If
Next
Application.ScreenUpdating = True
End Sub

Anzeige
Fehlermeldung...
20.04.2011 08:26:57
Mandy
Hallo
erst mal Danke.
hier kommt eine Fehlermeldung:
die Methode 'Intersect' für der Objekt '_Global' ist fehlgeschlagen.
Gemeint ist die Zeile:
If Not Intersect(shp.TopLeftCell, Selection) Is Nothing Then shp.Delete
kannst du damit was anfangen ?
Gruß
Mandy
AW: Fehlermeldung...
20.04.2011 11:32:04
Beverly
Hi Mandy,
ersetzte Selection durch .Rows("7:" & Loletzte)


Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige