Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
600to604
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
600to604
600to604
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

code beschleunigen

code beschleunigen
20.04.2005 14:12:53
joe
hallo,
in meinem arbeitsblatt habe ich eine zeichnung per makro erstellt, in der sehr viele shapes enthalten sind.
alle shapes haben eine eindeutige bezeichnung.
in folgendem code-beispiel zähle ich zum einen die anzahl der vorhandenen shapes mit namen "Control" (einer xlCheckBox), und ändere dann die farbe von einem rechteck in abhägigkeit davon, ob "Control" true oder false ist.
leider dauert das bei großen zeichnungen zu lange.
daher würde es mich freuen, wenn jemand eine möglichkeit weiß, wie man dies beschleunigen könnte.


Sub zaehlen()
Dim auswahl As Shape
Dim rechteck As Shape
Dim zaehler As Integer
Dim rechteckzaehler As Integer
For Each auswahl In ActiveSheet.Shapes
If (Left(auswahl.Name, 7) = "Control") Then
zaehler = zaehler + 1
auswahl.Select
For Each rechteck In ActiveSheet.Shapes
If (rechteck.Name = "rechteck " & zaehler) Then
If (Selection.Value = 1) Then
rechteck.Fill.ForeColor.SchemeColor = 5
rechteck.AlternativeText = "auswahl"
rechteckzaehler = rechteckzaehler + 1
Else
rechteck.Fill.ForeColor.SchemeColor = 1
rechteck.AlternativeText = ""
End If
End If
Next
End If
Next
End Sub


vielen dank im voraus
joe

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: code beschleunigen
20.04.2005 14:18:14
Andre
Hast du schon mal versucht die Bildschirmausgabe dabei abzuschalten?
AW: code beschleunigen
20.04.2005 14:26:45
joe
hallo andre,
ja, Application.ScreenUpdating = False habe ich schon getestet, und bringt auch was aber eben nicht genug.
andere idee?
joe
AW: code beschleunigen
20.04.2005 14:33:42
Holger
Hi,
konsequent auf select verzichten!
mfg Holger
AW: code beschleunigen
20.04.2005 14:50:58
joe
hallo holger,
danke, aber in diesem fall weiß ich nicht wie, weil "auswahl.value" nicht funktioniert hat - deshalb der umweg über select.
kannst du mir da weiterhelfen, weil das problem nicht zum ersten mal aufgetreten ist. das würde mich weiterbringen.
joe
AW: code beschleunigen
20.04.2005 14:59:53
Holger
Hi,
lad mal ein kleines Beispiel hoch.
mfg Holger
Anzeige
AW: code beschleunigen
20.04.2005 15:32:18
joe
hi holger,
wenn es geklappt hat, siehst du hier einen link mit dem gleichen beispiel wie beschrieben, allerdings nochmal gekürzt.
https://www.herber.de/bbs/user/21424.xls
es sind zwei funktionen drin - eine mit select, die andere ohne aber dafür mit einem debugfehler "objekt unterstützt diese eigenschaft oder methode nicht"
danke schon mal
joe
AW: code beschleunigen
20.04.2005 16:05:54
joe
hallo holger,
einwandfrei - vielen dank für die hilfe - es funktioniert mit "control format".
danke dafür - leider hat sich an der geschwindigkeit nichts geändert.
das problem scheint daran zu liegen, dass ich zweimal mit der foreach - schleife sämtliche shapes des arbeitsblatts durchlaufe.
wenn ich den zweiten schleifendurchlauf umgehen könnte wäre es perfekt.
vielleicht dazu noch eine idee?
hier nochmal der code:

Sub zaehlen()
Dim auswahl As Shape
Dim rechteck As Shape
Dim zaehler As Integer
Dim rechteckzaehler As Integer
For Each auswahl In ActiveSheet.Shapes
If (Left(auswahl.Name, 7) = "Control") Then
zaehler = zaehler + 1
auswahl.Select
For Each rechteck In ActiveSheet.Shapes
If (rechteck.Name = "rechteck " & zaehler) Then
If (Selection.Value = 1) Then
rechteck.Fill.ForeColor.SchemeColor = 5
rechteck.AlternativeText = "auswahl"
rechteckzaehler = rechteckzaehler + 1
Else
rechteck.Fill.ForeColor.SchemeColor = 1
rechteck.AlternativeText = ""
End If
End If
Next
End If
Next
End Sub

mfg joe
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige