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

select vermeiden für shapes

select vermeiden für shapes
22.11.2004 16:06:09
joe
hallo,
da ich hier öfters mal gelesen habe, dass man select vermeiden sollte, hoffe ich auf entsprechende hilfe.
und zwar habe ich z.b. folgenden code:
ActiveSheet.Shapes.AddShape(msoShapeRectangle, modul_x, modul_y, x_shape, y_shape).Select
Selection.ShapeRange.Line.Weight = 0.75
Selection.ShapeRange.Line.DashStyle = msoLineSolid
Selection.ShapeRange.Line.Style = msoLineSingle
Selection.ShapeRange.Line.Transparency = 0#
Selection.ShapeRange.Line.Visible = msoTrue
Selection.ShapeRange.Line.ForeColor.SchemeColor = 43
Selection.ShapeRange.Line.BackColor.RGB = RGB(255, 255, 255)
Selection.ShapeRange.Fill.Visible = msoTrue
Selection.ShapeRange.Fill.ForeColor.SchemeColor = 48
Selection.ShapeRange.Fill.Transparency = 0#
Selection.ShapeRange.Fill.OneColorGradient msoGradientHorizontal, 1, 0.23
da dieser code in einer schleife steht, kommt es vor, dass über 100 oder 200 solcher rechtecke gezeichnet werden sollen, was den excel-speicher ganz schön voll macht.
ich wäre sehr dankbar, wenn mir jemand diesen code ohne select umschreiben könnte, und idealerweise ein wenig erklären.
danke im voraus
joe

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: select vermeiden für shapes
ransi


      
hallo
versuchs mal so:
habs getestet, allerdings mit zahlen anstatt mit "modul_x, modul_y, x_shape, y_shape"
Public Sub t()
ActiveSheet.Shapes.AddShape(msoShapeRectangle, 20, 30, 40, 50).Name = "w"
With Shapes("w")
      .Line.Weight = 0.75
      .Line.DashStyle = msoLineSolid
      .Line.Style = msoLineSingle
      .Line.Transparency = 0#
      .Line.Visible = msoTrue
      .Line.ForeColor.SchemeColor = 43
      .Line.BackColor.RGB = RGB(255, 255, 255)
      .Fill.Visible = msoTrue
      .Fill.ForeColor.SchemeColor = 48
      .Fill.Transparency = 0#
      .Fill.OneColorGradient msoGradientHorizontal, 1, 0.23
      
End With
End Sub
ransi 


Anzeige
AW: select vermeiden für shapes
22.11.2004 16:38:43
Josef
Hallo Joe!
Das geht zB. so.

Sub shape_ohne_select()
Dim shp As Shape
Set shp = ActiveSheet.Shapes.AddShape(msoShapeRectangle, modul_x, modul_y, x_shape, y_shape)
With shp
'###.Name = "MeineForm" & zähler 'optional, um die shapes mit namen zu versehen###
'.Line.Weight = 0.75
'.Line.DashStyle = msoLineSolid
'.Line.Style = msoLineSingle
'.Line.Transparency = 0#
'.Line.Visible = msoTrue
.Line.ForeColor.SchemeColor = 43
.Line.BackColor.RGB = RGB(255, 255, 255)
'.Fill.Visible = msoTrue
.Fill.ForeColor.SchemeColor = 48
'.Fill.Transparency = 0#
.Fill.OneColorGradient msoGradientHorizontal, 1, 0.23
End With
'Die auskommentierten angaben sind nicht notwendig, weil es sich um
'sdandartwerte handelt!
End Sub

Gruß Sepp
Anzeige
AW: select vermeiden für shapes
22.11.2004 17:00:25
joe
danke an alle für die schnellen antworten.
es klappt perfekt.
besonders der zusätzliche hinweis von sepp, dass ich die standardwerte nicht nochmal setzen muß, hat beim zeichnen von 150 rechtecken einen zeitgewinn von ca einer bis zwei sekunden ausgemacht.
vielen dank
joe
AW: select vermeiden für shapes
ypsilon
hi joe,
eventuell so

Sub test()
'erst alle einfügen logischerweise nicht hier mit den festen zahlen
'sondern mit deinen variablen
For i = 1 To 100
ActiveSheet.Shapes.AddShape msoShapeRectangle, 50, 50, 100, 200
Next
'und dann formatieren
For i = 1 To Shapes.Count
Shapes(i).Line.Weight = 0.75
Shapes(i).Line.DashStyle = msoLineSolid
Shapes(i).Line.Style = msoLineSingle
Shapes(i).Line.Transparency = 0#
Shapes(i).Line.Visible = msoTrue
Shapes(i).Line.ForeColor.SchemeColor = 43
Shapes(i).Line.BackColor.RGB = RGB(255, 255, 255)
Shapes(i).Fill.Visible = msoTrue
Shapes(i).Fill.ForeColor.SchemeColor = 48
Shapes(i).Fill.Transparency = 0#
Shapes(i).Fill.OneColorGradient msoGradientHorizontal, 1, 0.23
Next
End Sub

cu Micha
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige