Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
24.04.2024 17:19:09
Anzeige
Archiv - Navigation
1708to1712
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

screenshot per Makro einfügen

screenshot per Makro einfügen
26.08.2019 12:37:59
Raphael
Hallo zusammen,
Dank Nepumuk hier im Forum, der mir einen wunderbar funktionierenden Code gegeben hat, habe ich den ersten Teil meines Projektes erstellen können.
Jetzt geht es an den zweiten Teil.
In der angehängten Beispieldatei ist im Reiter „Panel“ ein Bild aus verschiedenen shapes gebildet. Das möchte ich nun als screenshot in den Reiter „Manufacturerpanel“ einfügen, ebenfalls als Schleife. In der Beispieldatei sind die Werte fix eingetragen, in der Originalen werden diese berechnet.
Folgende Fragen habe ich dazu:
1. Der screenshot wird noch abhängig von Zellen erstellt (Das Beispiel ist auch schon hier aus dem Forum). Wie bekomme ich den Code dazu das er vom Startpunkt oben links das ganze Bild im Reiter „Panel“ fotografiert. Die Werte dazu werden im Reiter „Manufacturerpanel“ in Reihe 17 ab Spalte CG angezeigt.
2. Dann die Schleife. Das Bild soll nun so wie abfotografiert in 2 Spalten und 4 Reihen (also 8x) eingefügt werden. Die entsprechenden Startpunkte sind im Reiter „Manufactruerpanel“ in Zeile 11 ab Spalte CB angezeigt
3.Noch eine Besonderheit: wenn in Zelle CD4 statt der 1 eine 2 steht soll das Bild um 90° gedreht werden. Ob im oder gegen den Uhrzeigersinn ist dabei egal
Im angehängten Beispiel ist ein auskommentierter Code mit dabei der statt des Bildes nur blaue Rechtecke in Reihen und Spalten einfügt. Das ist im Grunde der Code den ich von Nepumuk erhalten habe.
https://www.herber.de/bbs/user/131625.xlsm
Ich selbst habe von VBA leider wenig (bis gar keine) Ahnung und kann bestenfalls
vorhanden Codes anpassen.
Vielen Dank schon mal im Voraus
Gruß
Raphael

14
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: screenshot per Makro einfügen
29.08.2019 07:48:14
Raphael
Hallo
ich habe in der Zwischnezeit bei Microsoft ein Besipiel gefunden, das die shapes vom "Panel" in den Reiter "Manufacrurerpanel" kopiert. Das funktioniert auch schon ganz gut.
Wie aber kann man den Startpunkt oben links der kopierten shapes bestimmen?
Und damit auch die Startpunkte der weiteren Kopien die eingefügt werden sollen?
Und wie kann man die shapes um 90° drehen, kann man die shapes gruppieren?
Im Reiter "Panel" wird der kopierte BEreich gestrichelt umrandet angezeigt, kann man das "abstellen"?
https://www.herber.de/bbs/user/131704.xlsm
Danke schon mal für eure Vorschläge
Raphael
Anzeige
AW: screenshot per Makro einfügen
29.08.2019 09:03:09
Torsten
Hallo,
mal zu:
Im Reiter "Panel" wird der kopierte BEreich gestrichelt umrandet angezeigt, kann man das "abstellen"?

Hier nach dem Paste Befehl die Zeile:
Application.CutCopyMode = False

Alles andere noch offen.
Gruss Torsten
AW: screenshot per Makro einfügen
29.08.2019 10:10:43
Raphael
Hallo Torsten,
Application.CutCopyMode = False
funktioniert super, Danke
Raphael
ein Frage dazu...
29.08.2019 09:27:23
Torsten
...waere noch. Willst du das wirklich als Screenshot in das andere Tabellenblatt einfuegen oder Die einzelnen Shapes uebertragen?
Anzeige
AW: ein Frage dazu...
29.08.2019 10:06:39
Raphael
Hallo Torsten,
ein screenshot wäre mir eigentlich lieber da das Panel auch mal gedreht werden muss um 90°. Ich denke das wird mit einem Bild einfacher als alle shapes drehen und dabei in der Zusammenstellung zu belassen
Den Befehl oben werde ich gleich mal einfügen
Danke
Raphael
AW: ein Frage dazu...
29.08.2019 12:07:32
Torsten
Hallo Raphael,
also nach langem Basteln hab ich jetzt erst mal geschafft, dass der Screenshot richtig funktioniert.
Nimm mal diesen Code (alles in ein neues Modul) und weisse deinem Button das Makro "ShapeAsPic" zu:

Public a As String
Sub ShapeAsPic()
a = Environ("Username")
Dim TempFilePath As String
Dim sh As Shape, rngTopLeftCell As Range, rngBottomRightCell As Range, xRg As Range
On Error Resume Next
Set rngTopLeftCell = Worksheets("Panel").Shapes("Panel").TopLeftCell
Set rngBottomRightCell = Worksheets("Panel").Shapes("Panel").BottomRightCell
If Not rngTopLeftCell Is Nothing And Not rngBottomRightCell Is Nothing Then
Set xRg = Worksheets("Panel").Range(rngTopLeftCell.Address, rngBottomRightCell.Address) _
End If
On Error GoTo 0
TempFilePath = "C:\Users\" & a & "\"
Call createJpg(ActiveSheet.Name, xRg.Address, "DashboardFile")
End Sub
Sub createJpg(SheetName As String, xRgAddrss As String, nameFile As String)
Dim filepath As String
filepath = "C:\Users\" & a & "\"
Dim xRgPic As Range
ThisWorkbook.Activate
Worksheets("Panel").Activate
Set rngTopLeftCell = Worksheets("Panel").Shapes("Panel").TopLeftCell
Set rngBottomRightCell = Worksheets("Panel").Shapes("Panel").BottomRightCell
If Not rngTopLeftCell Is Nothing And Not rngBottomRightCell Is Nothing Then
Set xRgPic = Worksheets("Panel").Range(rngTopLeftCell.Address, rngBottomRightCell. _
Address)
End If
xRgPic.CopyPicture
PicHeight = Worksheets("Manufacturerpanel").Range("CN17")
PicWidth = Worksheets("Manufacturerpanel").Range("CL17")
With ThisWorkbook.Worksheets("Manufacturerpanel").ChartObjects.Add(40, 70, PicWidth,  _
PicHeight)
.Name = "Temp"
.Activate
.Chart.Paste
.Chart.Export filepath & nameFile & ".jpg", "JPG"
End With
Set xRgPic = Nothing
delete_DashboardFile
End Sub
Sub delete_DashboardFile()
Dim aFile As String
a = Environ("Username")
filepath = "C:\Users\" & a & "\"
aFile = filepath & "DashboardFile.jpg"
If Len(Dir$(aFile)) > 0 Then
Kill aFile
End If
End Sub

An der 90 Grad Drehung arbeite ich noch.
Gruss Torsten
Anzeige
weitere Frage
29.08.2019 12:49:10
Torsten
muss die Groesse des Screenshots mit der Groesse des Panels uebereinstimmen?
AW: weitere Frage
29.08.2019 13:03:31
Raphael
Hallo Torsten,
ja das Bild sollte genau die Größe des hellgrünenn Panels haben. Daher dachte ich auch mit dem kopieren aller shapes anahnd von Zellnen geht es nicht, da ja dann immer der weiße Rand entsteht beim Bild.
Im Reiter Manufacturerpanel habe ich die Startwerte auch mit angegeben des hellgrünen Panels. Und zusammen wit der Höhe und Weite könnte man doch einen screenshot erstellen der genau diesen Bereich abdeckt ... also ich leider nicht :(
Das Makro habe ich mal eingespielt in meine Datei, es fehlene ihm aber ein paar Deklarationen. _ Es stoppt z. B. bei

rngTopLeftCell
, der gelbe Hinweis beim Debuggen steht aber bei

Sub createJpg(SheetName As String, xRgAddrss As String, nameFile As String)
Habe ich da nicht alles kopiert?
Und schon mal vielen Dank das du dich der Sache annimmst
Gruß
Raphael
BTW: Kann erst wieder morgen früh dran arbeite
Anzeige
AW: weitere Frage
29.08.2019 13:04:41
Raphael
... noch als offen gekennzeichnet :)
AW: ein Frage dazu...
29.08.2019 13:07:14
Torsten
So hallo nochmals,
ich habe jetzt auch die Drehung hinbekommen. Ich kann aber nicht garantieren, dass die Dimensionen nach all dem noch mit dem Original Panel uebereinstimmen.
Hier nun der gesamte Code:

Option Explicit
Public a As String
Sub ShapeAsPic()
a = Environ("Username")
Dim TempFilePath As String
Dim rngTopLeftCell As Range, rngBottomRightCell As Range, xRg As Range
On Error Resume Next
Set rngTopLeftCell = Worksheets("Panel").Shapes("Panel").TopLeftCell
Set rngBottomRightCell = Worksheets("Panel").Shapes("Panel").BottomRightCell
If Not rngTopLeftCell Is Nothing And Not rngBottomRightCell Is Nothing Then
Set xRg = Worksheets("Panel").Range(rngTopLeftCell.Address, rngBottomRightCell.Address) _
End If
On Error GoTo 0
TempFilePath = "C:\Users\" & a & "\"
Call createJpg(ActiveSheet.Name, xRg.Address, "DashboardFile")
If Worksheets("Manufacturerpanel").Range("CD4") = 2 Then
Call Drehung
End If
Worksheets("Manufacturerpanel").Range("A1").Activate
End Sub
Sub createJpg(SheetName As String, xRgAddrss As String, nameFile As String)
Dim PicHeight As Double, PicWidth As Double
Dim xRgPic As Range, rngTopLeftCell As Range, rngBottomRightCell As Range
Dim filepath As String
filepath = "C:\Users\" & a & "\"
ThisWorkbook.Activate
Worksheets("Panel").Activate
Set rngTopLeftCell = Worksheets("Panel").Shapes("Panel").TopLeftCell
Set rngBottomRightCell = Worksheets("Panel").Shapes("Panel").BottomRightCell
If Not rngTopLeftCell Is Nothing And Not rngBottomRightCell Is Nothing Then
Set xRgPic = Worksheets("Panel").Range(rngTopLeftCell.Address, rngBottomRightCell. _
Address)
End If
xRgPic.CopyPicture
PicHeight = Worksheets("Manufacturerpanel").Range("CN17")
PicWidth = Worksheets("Manufacturerpanel").Range("CL17")
With Worksheets("Manufacturerpanel").ChartObjects.Add(40, 70, PicWidth, PicHeight)
.Name = "Temp"
.Activate
.Chart.Paste
.Chart.Export filepath & nameFile & ".jpg", "JPG"
End With
Set xRgPic = Nothing
delete_DashboardFile
End Sub
Sub delete_DashboardFile()
Dim aFile As String, filepath As String
a = Environ("Username")
filepath = "C:\Users\" & a & "\"
aFile = filepath & "DashboardFile.jpg"
If Len(Dir$(aFile)) > 0 Then
Kill aFile
End If
End Sub
Sub Drehung()
Dim a As Double
Worksheets("Manufacturerpanel").ChartObjects("Temp").Activate
a = Worksheets("Manufacturerpanel").Shapes("Temp").Width
ActiveChart.Shapes.Range(Array("chart")).Select
Selection.ShapeRange.IncrementRotation 90
Worksheets("Manufacturerpanel").Shapes("Temp").Height = a
Worksheets("Manufacturerpanel").Range("A1").Activate
End Sub

Anzeige
AW: ein Frage dazu...
29.08.2019 17:11:17
Raphael
Hallo Torsten
ich glaube so im Vergleich sind die Bilder gleich, das passt so.
Ich habe versucht die Schleife zu ergänzen, fehlt aber noch beim setztne der Bilder der Index, das versuche ich noch weiter aber wahrscheinlich erst am Wochenende
https://www.herber.de/bbs/user/131722.xlsm
Danke und schöänen Abend
Raphael
neue Idee
31.08.2019 17:16:01
Raphael
Hallo Torsten,
ich habe mal weiter probiert und bin dann auf eine Idee gekommen: warum erst ein Bild machen. Man könnte doch auch einfach alle vorhandenen shapes des Panels nochmal in eine Schleife packen und im Manufacturerpanel einblenden.
Den folgeneden Code habe ich mal erweitert, ich verstehe aber die Schleife nicht.Es werden zwar die richtigen Anzahlen an shapes vom Panel eingefügt, aber alle am gleichen Startpunkt übereinander. Dafür kommen an der richtigen Stelle Ovale (habe ich als Test mal so angegeben)
Wie muss der Code der Schleife verändert werden, das alle shapes des Panels wieder als Schleife eingefügt werden

Sub Manufacturerpanel
'Deklarierung der Variablen die Schleife des Panels im Manufacturerpanels
'=> Schleife in Arbeit
'=> Drehung fehlt noch (muss separat berechnet werden das sich das Panel gedreht darstellt)
Dim objShapeMF As Shape
Dim lngIndex1MF As Long, lngIndex2MF As Long
Dim sngWidthMF As Single, sngHeightMF As Single
Dim sngLeftMF As Single, sngTopMF As Single
Dim sngDistanceMFr As Single
Dim sngDistanceMFc As Single
Dim looprowMF As Single
Dim loopcolumnMF As Single
sngWidthMF = Cells(47, 90).Value
sngHeightMF = Cells(47, 92).Value
sngLeftMF = Cells(47, 86).Value
sngTopMF = Cells(47, 88).Value
sngDistanceMFr = Cells(47, 94).Value
sngDistanceMFc = Cells(47, 97).Value
looprowMF = Cells(47, 95).Value
loopcolumnMF = Cells(47, 98).Value
'Panels in Manufacturerpanel mit Schleife
For lngIndex1MF = 0 To loopcolumnMF
For lngIndex2MF = 0 To looprowMF
Set objShapeMF = ActiveSheet.Shapes.AddShape(Type:=msoShapeOval, _
Left:=sngLeftMF + sngWidthMF * lngIndex2MF + sngDistanceMFr * lngIndex2MF, _
Top:=sngTopMF + sngHeightMF * lngIndex1MF + sngDistanceMFc * lngIndex1MF, _
Width:=sngWidthMF, Height:=sngHeightMF)
'Ab hier wird das Panel wiederholt
'Die notwendigen Daten werden aus dem Reiter Panel in den Reiter Manufacturerpanel gespiegelt,  _
der Startpunkt des ersten Panels wird dazu neu berechnet
'Deklarierung Variable für shape1/Panel (Panel wird immer  _
angezeigt)
Dim Farbe1
Farbe1 = Range("ce10").Interior.Color
Dim Left1
Left1 = Range("ch10")
Dim Top1
Top1 = Range("cj10")
Dim Width1
Width1 = Range("cl10")
Dim Hight1
Hight1 = Range("cn10")
'shape1/Panel
ActiveSheet.Shapes.AddShape(msoShapeRectangle, Left1, Top1,  _
Width1, Hight1).Select
Selection.ShapeRange.Name = Range("cc10")
Selection.Name = Range("cc10").Value
With Selection.ShapeRange.Fill
.Visible = msoTrue
.ForeColor.RGB = Farbe1
.Transparency = 0
.Solid
End With
'ohne Rahmen
Selection.ShapeRange.Line.Visible = msoFalse
'Deklarierung Variable für shape2/TabRoute (Danke an Nepumuk,  _
Herbers Excel Forum)
Dim objShape2 As Shape
Dim lngIndex1a As Long, lngIndex2a As Long
Dim lngColor2 As Long
Dim sngWidth2 As Single, sngHeight2 As Single
Dim sngLeft2 As Single, sngTop2 As Single
Dim sngDistance2r As Single
Dim sngDistance2c As Single
Dim strName2 As String
Dim looprow2 As Single
Dim loopcolumn2 As Single
lngColor2 = Cells(11, 83).Interior.Color
sngWidth2 = Cells(11, 90).Value
sngHeight2 = Cells(11, 92).Value
sngLeft2 = Cells(11, 86).Value
sngTop2 = Cells(11, 88).Value
sngDistance2r = Cells(11, 94).Value
sngDistance2c = Cells(11, 97).Value
strName2 = Cells(11, 81).Value
looprow2 = Cells(11, 95).Value
loopcolumn2 = Cells(11, 98).Value
'shape2/TabRoute mit Schleife
For lngIndex1a = 0 To loopcolumn2
For lngIndex2a = 0 To looprow2
Set objShape2 = ActiveSheet.Shapes.AddShape(Type:= _
msoShapeRectangle, _
Left:=sngLeft2 + sngWidth2 * lngIndex2a +  _
sngDistance2r * lngIndex2a, _
Top:=sngTop2 + sngHeight2 * lngIndex1a +  _
sngDistance2c * lngIndex1a, _
Width:=sngWidth2, Height:=sngHeight2)
With objShape2
.Name = strName2
With .Fill
.Visible = msoTrue
.ForeColor.RGB = lngColor2
.Transparency = 0
Call .Solid
End With
'ohne Rahmen
.Line.Visible = msoFalse
End With
Next
Next
'Deklarierung Variable für shape3/PCB (Prinzip wie shape2/ _
TabRoute)
Dim objShape3 As Shape
Dim lngIndex1b As Long, lngIndex2b As Long
Dim lngColor3 As Long
Dim sngWidth3 As Single, sngHeight3 As Single
Dim sngLeft3 As Single, sngTop3 As Single
Dim sngDistance3r As Single
Dim sngDistance3c As Single
Dim strName3 As String
Dim looprow3 As Single
Dim loopcolumn3 As Single
lngColor3 = Cells(12, 83).Interior.Color
sngWidth3 = Cells(12, 90).Value
sngHeight3 = Cells(12, 92).Value
sngLeft3 = Cells(12, 86).Value
sngTop3 = Cells(12, 88).Value
sngDistance3r = Cells(12, 94).Value
sngDistance3c = Cells(12, 97).Value
strName3 = Cells(12, 81).Value
looprow3 = Cells(12, 95).Value
loopcolumn3 = Cells(12, 98).Value
'shape3/PCB mit Schleife
For lngIndex1b = 0 To loopcolumn3
For lngIndex2b = 0 To looprow3
Set objShape3 = ActiveSheet.Shapes.AddShape(Type:= _
msoShapeRectangle, _
Left:=sngLeft3 + sngWidth3 * lngIndex2b +  _
sngDistance3r * lngIndex2b, _
Top:=sngTop3 + sngHeight3 * lngIndex1b +  _
sngDistance3c * lngIndex1b, _
Width:=sngWidth3, Height:=sngHeight3)
With objShape3
.Name = strName3
With .Fill
.Visible = msoTrue
.ForeColor.RGB = lngColor3
.Transparency = 0
Call .Solid
End With
'ohne Rahmen
.Line.Visible = msoFalse
End With
Next
Next
'Deklarierung Variable für shape5/Panelinfo
Dim Farbe5
Farbe5 = Range("ce14").Interior.Color
Dim Left5
Left5 = Range("ch14")
Dim Top5
Top5 = Range("cj14")
Dim Width5
Width5 = Range("cl14")
Dim Hight5
Hight5 = Range("cn14")
'shape5/Panelinfo
ActiveSheet.Shapes.AddShape(msoShapeRectangle, Left5, Top5,  _
Width5, Hight5).Select
Selection.ShapeRange.Name = Range("cc14")
Selection.Name = Range("cc14").Value
With Selection.ShapeRange.Fill
.Visible = msoTrue
.ForeColor.RGB = Farbe5
.Transparency = 0
.Solid
End With
'ohne Rahmen
Selection.ShapeRange.Line.Visible = msoFalse
'Deklarierung Variable für shape4/V-score vertical
Dim objShape4v As Shape
Dim lngIndex14v As Long, lngIndex24v As Long
Dim lngColor4v As Long
Dim sngWidth4v As Single, sngHeight4v As Single
Dim sngLeft4v As Single, sngTop4v As Single
Dim sngDistance4v As Single
Dim strName4v As String
Dim looprow4v As Single
lngColor4v = Cells(13, 83).Interior.Color
sngWidth4v = Cells(13, 90).Value
sngHeight4v = Cells(13, 92).Value
sngLeft4v = Cells(13, 86).Value
sngTop4v = Cells(13, 88).Value
sngDistance4v = Cells(13, 94).Value
strName4v = Cells(13, 81).Value
looprow4v = Cells(13, 95).Value
'shape4/V-score vertical mit Schleife
For lngIndex14v = 0 To 0
For lngIndex24v = 0 To looprow4v
Set objShape4v = ActiveSheet.Shapes.AddShape(Type:= _
msoShapeRectangle, _
Left:=sngLeft4v + sngWidth4v * lngIndex24v +  _
sngDistance4v * lngIndex24v, _
Top:=sngTop4v + sngHeight4v * lngIndex14v +  _
sngDistance4v * lngIndex14v, _
Width:=sngWidth4v, Height:=sngHeight4v)
With objShape4v
.Name = strName4v
With .Fill
.Visible = msoTrue
.ForeColor.RGB = lngColor4v
.Transparency = 0
Call .Solid
End With
'ohne Rahmen
.Line.Visible = msoFalse
End With
Next
Next
'Deklarierung Variable für shape4/V-score horizontal
Dim objShape4h As Shape
Dim lngIndex14h As Long, lngIndex24h As Long
Dim lngColor4h As Long
Dim sngWidth4h As Single, sngHeight4h As Single
Dim sngLeft4h As Single, sngTop4h As Single
Dim sngDistance4h As Single
Dim strName4h As String
Dim loopcolumn4h As Single
lngColor4h = Cells(15, 83).Interior.Color
sngWidth4h = Cells(15, 90).Value
sngHeight4h = Cells(15, 92).Value
sngLeft4h = Cells(15, 86).Value
sngTop4h = Cells(15, 88).Value
sngDistance4h = Cells(15, 97).Value
strName4h = Cells(15, 81).Value
loopcolumn4h = Cells(15, 98).Value
'shape4/V-score horizontal mit Schleife
For lngIndex14h = 0 To loopcolumn4h
For lngIndex24h = 0 To 0
Set objShape4h = ActiveSheet.Shapes.AddShape(Type:= _
msoShapeRectangle, _
Left:=sngLeft4h + sngWidth4h * lngIndex24h +  _
sngDistance4h * lngIndex24h, _
Top:=sngTop4h + sngHeight4h * lngIndex14h +  _
sngDistance4h * lngIndex14h, _
Width:=sngWidth4h, Height:=sngHeight4h)
With objShape4h
.Name = strName4h
With .Fill
.Visible = msoTrue
.ForeColor.RGB = lngColor4h
.Transparency = 0
Call .Solid
End With
'ohne Rahmen
.Line.Visible = msoFalse
End With
Next
Next
'Deklarierung Variable für shape9a-d/Toolinghole
Dim Farbe9
Farbe9 = Range("ce21").Interior.Color
Dim Left9a
Left9a = Range("cj21")
Dim Top9a
Top9a = Range("cl21")
Dim Left9b
Left9b = Range("cn21")
Dim Top9b
Top9b = Range("cp21")
Dim Left9c
Left9c = Range("cr21")
Dim Top9c
Top9c = Range("ct21")
Dim Left9d
Left9d = Range("cv21")
Dim Top9d
Top9d = Range("cx21")
Dim diameter9
diameter9 = Range("ch21")
'shape9a/Toolinghole
ActiveSheet.Shapes.AddShape(msoShapeOval, Left9a, Top9a,  _
diameter9, diameter9).Select
Selection.ShapeRange.Name = Range("cc21")
Selection.Name = Range("cc21").Value
With Selection.ShapeRange.Fill
.Visible = msoTrue
.ForeColor.RGB = Farbe9
.Transparency = 0
.Solid
End With
'ohne Rahmen
Selection.ShapeRange.Line.Visible = msoFalse
'shape9b/Toolinghole
ActiveSheet.Shapes.AddShape(msoShapeOval, Left9b, Top9b,  _
diameter9, diameter9).Select
Selection.ShapeRange.Name = Range("cc21")
Selection.Name = Range("cc21").Value
With Selection.ShapeRange.Fill
.Visible = msoTrue
.ForeColor.RGB = Farbe9
.Transparency = 0
.Solid
End With
'ohne Rahmen
Selection.ShapeRange.Line.Visible = msoFalse
'shape9c/Toolinghole
ActiveSheet.Shapes.AddShape(msoShapeOval, Left9c, Top9c,  _
diameter9, diameter9).Select
Selection.ShapeRange.Name = Range("cc21")
Selection.Name = Range("cc21").Value
With Selection.ShapeRange.Fill
.Visible = msoTrue
.ForeColor.RGB = Farbe9
.Transparency = 0
.Solid
End With
'ohne Rahmen
Selection.ShapeRange.Line.Visible = msoFalse
'shape9d/Toolinghole
ActiveSheet.Shapes.AddShape(msoShapeOval, Left9d, Top9d,  _
diameter9, diameter9).Select
Selection.ShapeRange.Name = Range("cc21")
Selection.Name = Range("cc21").Value
With Selection.ShapeRange.Fill
.Visible = msoTrue
.ForeColor.RGB = Farbe9
.Transparency = 0
.Solid
End With
'ohne Rahmen
Selection.ShapeRange.Line.Visible = msoFalse
'Deklarierung Variable für shape10a-c/Fiducial
Dim Farbe10
Farbe10 = Range("ce22").Interior.Color
Dim Left10a
Left10a = Range("cj22")
Dim Top10a
Top10a = Range("cl22")
Dim Left10b
Left10b = Range("cn22")
Dim Top10b
Top10b = Range("cp22")
Dim Left10c
Left10c = Range("cr22")
Dim Top10c
Top10c = Range("ct22")
Dim diameter10
diameter10 = Range("ch22")
'shape10a/Fiducial
ActiveSheet.Shapes.AddShape(msoShapeOval, Left10a, Top10a,  _
diameter10, diameter10).Select
Selection.ShapeRange.Name = Range("cc22")
Selection.Name = Range("cc22").Value
With Selection.ShapeRange.Fill
.Visible = msoTrue
.ForeColor.RGB = Farbe10
.Transparency = 0
.Solid
End With
'ohne Rahmen
Selection.ShapeRange.Line.Visible = msoFalse
'shape10b/Fiducial
ActiveSheet.Shapes.AddShape(msoShapeOval, Left10b, Top10b,  _
diameter10, diameter10).Select
Selection.ShapeRange.Name = Range("cc22")
Selection.Name = Range("cc22").Value
With Selection.ShapeRange.Fill
.Visible = msoTrue
.ForeColor.RGB = Farbe10
.Transparency = 0
.Solid
End With
'ohne Rahmen
Selection.ShapeRange.Line.Visible = msoFalse
'shape10c/Fiducial
ActiveSheet.Shapes.AddShape(msoShapeOval, Left10c, Top10c,  _
diameter10, diameter10).Select
Selection.ShapeRange.Name = Range("cc22")
Selection.Name = Range("cc22").Value
With Selection.ShapeRange.Fill
.Visible = msoTrue
.ForeColor.RGB = Farbe10
.Transparency = 0
.Solid
End With
'ohne Rahmen
Selection.ShapeRange.Line.Visible = msoFalse
Next
Next
End sub

Ich denke hier liegt das Problem in der ersten Zeile, die die Ovale einfügt
            Set objShapeMF = ActiveSheet.Shapes.AddShape(Type:=msoShapeOval, _
Left:=sngLeftMF + sngWidthMF * lngIndex2MF + sngDistanceMFr * lngIndex2MF, _
Top:=sngTopMF + sngHeightMF * lngIndex1MF + sngDistanceMFc * lngIndex1MF, _
Width:=sngWidthMF, Height:=sngHeightMF)

ansonsten fügt die Schleife ja schon die richtige Anzahl an Panels ein, nur eben alle am selben Fleck
BTW: ich weiß der Code für das Panel ist nicht besonders schön geschrieben :( aber er funktioniert :)
Gruß
Raphael
Anzeige
AW: neue Idee
31.08.2019 20:31:32
Raphael
Hallo nochmal,
von der Logik her müsste es doch so sein das man die ganzen Panelshapes in eine separate sup einbindet und dann in der ersten der folgenden Zeilen
            Set objShapeMF = ActiveSheet.Shapes.AddShape(Type:=msoShapeOval, _
Left:=sngLeftMF + sngWidthMF * lngIndex2MF + sngDistanceMFr * lngIndex2MF, _
Top:=sngTopMF + sngHeightMF * lngIndex1MF + sngDistanceMFc * lngIndex1MF, _
Width:=sngWidthMF, Height:=sngHeightMF)

dann diese Untersub aufruft statt dem oval, oder?
=> Wie ruft man so eine Untersub auf?
Danke und Gruß
Raphael
Anzeige
AW: neue Idee
31.08.2019 20:50:56
Raphael
Hallo,
ich habs mit call probiert und eine Unter Sub erstellt,
funktioniert leider nicht
            set call Panels2Manufacturerpanel
Left:=sngLeftMF + sngWidthMF * lngIndex2MF + sngDistanceMFr * lngIndex2MF, _
Top:=sngTopMF + sngHeightMF * lngIndex1MF + sngDistanceMFc * lngIndex1MF, _
Width:=sngWidthMF, Height:=sngHeightMF)
meldet Syntaxfehler :(
Gruß
Raphael

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige