Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1808to1812
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

Pictures.Insert vs. AddPicture

Pictures.Insert vs. AddPicture
31.01.2021 16:40:17
neo007bb
Ich habe jetzt unzähle Varianten durch. Ich baue ein Bestellsystem für zwei verschieden Shops. Heißt, bei jedem eingetragenen Artikel in die Bestellliste soll am Ende der Listen-Zeile das jeweilige Logo eingefügt werden, kleiner als das Originalbild, kleiner als die Zeile selbst, für die Übersichtlichkeit in der Liste, mittig ausgerichtet.
Ich habe von Pictures.Insert zu Shapes.AddPicture gewechselt, da ich gelesen habe, dass dies die korrektere Form sei. Jetzt bekomme ich eine Fehlermeldung bei der Festlegung eines Rahmens.
Kann mir jemand meine Fehler aufzeigen? Folgende Fragen stellen sich mir:
- Welchen Variablen-Typ brauche ich für ein eingefügtes Bild?
- Wie kann ich diese Variable dann verwenden, um Größe, Position und Rahmen festzulegen?
Danke sehr!!!!!!
Sub LogoEinfügen (Shop As String, Zeile As Integer, Spalte As Integer)
Dim Breite As Integer
Dim Höhe As Integer
Dim strDatei As String
Dim Logo As Object
Dim ShopFarbe As Long, Rot As Long, Blau As Long
' Farben für die zwei Shops festlegen
Rot = 26316
Blau = 13395456
' Dateinamen je nach Shop auswählen und Shop-Farbe einstellen
If Shop = "ZL" Then
strDatei = "D:\logo1.jpg"
ShopFarbe = Rot
End If
If Shop = "AQ" Then
strDatei = "D:\logo2.jpg"
ShopFarbe = Blau
End If
' Bild einfügen
' Ort festlegen
Dim rg As Range
Set rg = ActiveSheet.Cells(Zeile, Spalte)
' Und einfügen
Set Logo = ActiveSheet.Shapes.AddPicture(strDatei, msoTrue, msoTrue, rg.Left, rg.Top, -1, -1)
Set rg = Nothing
With Logo
.LockAspectRatio = msoFalse              ' Verzerrung egal
.Height = Rows(Zeile).RowHeight - 4      ' kleiner als Zeile
.Width = Columns(Spalte).Width - 4       ' schmaler als Spalte
.Top = Cells(Zeile, Spalte).Top + (Cells(Zeile, Spalte).Height - Logo.Height) / 2          _
' mittig
.Left = Cells(Zeile, Spalte).Left + (Cells(Zeile, Spalte).Width - Logo.Width) / 2          _
' mittig
End With
' Rahmen ums Bild, in der Farbe des Shops
With Logo.ShapeRange.Line
.Visible = msoTrue
.ForeColor.RGB = ShopFarbe
.Weight = 1.5
.ForeColor.TintAndShade = 0
.ForeColor.Brightness = 0
End With
Set Logo = Nothing
' Zeilenhöhe anpassen
' Rows(Zeile).RowHeight = Logo.Height
End Sub

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Pictures.Insert vs. AddPicture
31.01.2021 17:06:47
Nepumuk
Hallo,
1. So:
Set Logo = ActiveSheet.Shapes.AddPicture(strDatei, msoFalse, msoTrue, rg.Left, rg.Top, -1, -1)
2. Der Datentyp Shape. Also:
Dim Logo As Shape
Gruß
Nepumuk
AW: Pictures.Insert vs. AddPicture
01.02.2021 20:50:33
neo007bb
Das hat mir zuerst geholfen, vielen Dank! Auch wenn ich nicht verstehe, warum. Denn schließlich lege ich den Lock auf das Seitenverhältnis doch im Nachhinein fest.
Außerdem: Wieso fügt es mir das Bild nicht im Original-Seitenverhältnis ein und ich kann es dann auf Spaltenbreite skalieren?
Ich hatte das getestet, vor oben stehendem Code. Das Ergebnis war, dass das Logo eingefügt wurde und sich danach nicht mehr bewegt hat (im Nachhinein wird eine Zeile eingefügt und die Zeile mit Logo nach unten geschoben).
Die Logo-Zeile hatte ich anfangs auf 40 Höhe, dann wollte ich sie kleiner haben und seitdem wurde mir das Logo nicht mehr verschoben.
Die Änderung am Seitenverhältnis hat das aufgehoben, allerdings ist es eben verzerrt. Für meine Zwecke zwar voll okay, aber dennoch wäre interessant zu wissen, woran es lag.
Anzeige
AW: Pictures.Insert vs. AddPicture
31.01.2021 17:08:55
volti
Hallo,
teste mal folgende Idee:
Code:

[Cc][+][-]

Sub LogoEinfügen(Shop As String, Zeile As Integer, Spalte As Integer) Dim Breite As Integer Dim Höhe As Integer Dim strDatei As String Dim Logo As Object Dim ShopFarbe As Long, Rot As Long, Blau As Long Dim rRette As Range Set rRette = ActiveCell ' Farben für die zwei Shops festlegen Rot = 26316 Blau = 13395456 ' Dateinamen je nach Shop auswählen und Shop-Farbe einstellen If Shop = "ZL" Then strDatei = "D:\logo1.jpg" ShopFarbe = Rot End If If Shop = "AQ" Then strDatei = "D:\logo1.jpg" ShopFarbe = Blau End If ' Bild einfügen ' Ort festlegen Dim rg As Range Set rg = ActiveSheet.Cells(Zeile, Spalte) ' Und einfügen Set Logo = ActiveSheet.Shapes.AddPicture(strDatei, msoTrue, msoTrue, rg.Left, rg.Top, -1, -1) Set rg = Nothing With Logo .LockAspectRatio = msoFalse ' Verzerrung egal .Height = Rows(Zeile).RowHeight - 4 ' kleiner als Zeile .Width = Columns(Spalte).Width - 4 ' schmaler als Spalte .Top = Cells(Zeile, Spalte).Top + (Cells(Zeile, Spalte).Height - Logo.Height) / 2 _ ' mittig .Left = Cells(Zeile, Spalte).Left + (Cells(Zeile, Spalte).Width - Logo.Width) / 2 _ ' mittig ' Rahmen ums Bild, in der Farbe des Shops .Select With Selection.ShapeRange.Line .Visible = msoTrue .ForeColor.RGB = ShopFarbe .Weight = 1.5 .ForeColor.TintAndShade = 0 .ForeColor.Brightness = 0 End With End With rRette.Select Set Logo = Nothing ' Zeilenhöhe anpassen ' Rows(Zeile).RowHeight = Logo.Height End Sub

_________________________
viele Grüße aus Freigericht 😊
Karl-Heinz

Anzeige
AW: Pictures.Insert vs. AddPicture
31.01.2021 22:50:18
neo007bb
Unterschied wäre hier das "Select?" ich habe gelesen, man soll das möglichst umterlassen?
Ich werde es morgen testen! Vielen Dank schon einmal!
AW: Pictures.Insert vs. AddPicture
31.01.2021 23:09:48
Daniel
Hi
das mit dem "Selectieren unterlassen" gilt in erster Linie für das Bearbeiten von Zellen in einem Tabellenblatt.
Bei Shape-Objekten ist das weniger kritisch.
das liegt daran, dass Excel beim selektieren einer Zelle eine Reihe von Aktionen im Hintergrund ausführen muss, bei Shapes nicht.
Gruß Daniel
AW: Pictures.Insert vs. AddPicture
01.02.2021 00:00:52
Daniel
Hi
mit With Logo.Line
(also ohne das ShapeRange)
läuft der Code bei mir ohne Fehler durch.
Gruß Daniel
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige