Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1768to1772
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
Bild an bestimmter Position einfügen
13.07.2020 15:03:50
Steph
Hallo liebe Forum,
mit folgendem Code kann ich per Druck auf einen Button ein Bild in mein Tabellenblatt mit der Beschriftung "Auswertung" einfügen. Allerdings wird das Bild immer beliebig irgendwo eingefügt. Wie ist es möglich, dass das Bild beim ersten Klick in Zelle J46 eingefügt wird, beim zweiten M46, beim dritten P46 usw.
Hier der Code:

Private Sub CommandButton3_Click()
Dim sPicture As String, pic As Picture
sPicture = Application.GetOpenFilename _
("Pictures (*.gif; *.jpg; *.bmp; *.tif), *.gif; *.jpg; *.bmp; *.tif", _
, "Select Picture to Import")
If sPicture = "False" Then Exit Sub
Set pic = Sheets("Auswertung").Pictures.Insert(sPicture)
With pic
.ShapeRange.LockAspectRatio = msoFalse
.Height = ActiveCell.Height
.Width = ActiveCell.Width
.Top = ActiveCell.Top
.Left = ActiveCell.Left
.Placement = xlMoveAndSize
End With
Set pic = Nothing
End Sub

Vielen Dank :)
Liebe Grüße,
Steph

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Bild an bestimmter Position einfügen
13.07.2020 15:58:42
Daniel
HI
schreibe die Spaltennummer, in die das Bild eingefügt werden soll, in eine freie Zelle,
z.B. 10 für Spalte J in die Zelle A1 (es kann auch jede andere Zelle sein, Excel hat genug davon, mehr als es Zählen kann)
verwende dann diesen Wert um die Zelle für die Position zu bestimmen:
.Height = Cells(46, Range("A1").value).Height
.Width = Cells(46, Range("A1").value).Width
...
danach erhöhst du dann den Wert der Zelle um 3, das ist dann die Zelle für das nächste einfügen:
Range("A1").Value = Range("A1").Value

durch das Speichern des Wertes in einer Zelle funktioniert das ganze auch, wenn du die Datei zwischendurch mal schließt und wieder öffnest.
Gruß Daniel
Anzeige
AW: Bild an bestimmter Position einfügen
17.07.2020 07:52:48
Steph
Hallo Daniel,
sorry für die späte Antwort ich lag die ganze Woche flach. Wenn ich das Problem mit deiner Lösung angehe, fügt er mir das Bild trotzdem immer irgendwo ein. Weißt du wodran das liegen könnte?
AW: Bild an bestimmter Position einfügen
14.07.2020 15:30:51
Beverly
Hi Steph,
andere Möglichkeit:
Private Sub CommandButton3_Click()
Dim sPicture As String, pic As Picture
Dim strSpalte As String, shaShape As Shape
strSpalte = "J46"
If ActiveSheet.Shapes.Count > 0 Then
For Each shaShape In ActiveSheet.Shapes
If shaShape.Top = Rows(46).Top Then strSpalte = _
shaShape.TopLeftCell.Offset(0, 3).Address
Next shaShape
End If
sPicture = Application.GetOpenFilename _
("Pictures (*.gif; *.jpg; *.bmp; *.tif), *.gif; *.jpg; *.bmp; *.tif", _
, "Select Picture to Import")
If sPicture = "False" Then Exit Sub
Set pic = Sheets("Auswertung").Pictures.Insert(sPicture)
With pic
.ShapeRange.LockAspectRatio = msoFalse
.Top = Range(strSpalte).Top
.Left = Range(strSpalte).Left
.Height = Range(strSpalte).Height
.Width = Range(strSpalte).Width
.Placement = xlMoveAndSize
End With
Set pic = Nothing
End Sub
Der Code prüft alle Shapes, ob sie sich in Zeile 46 befinden, nimmt die Adresse des zuletzt eingefügten Bildes und fügt das neue Bild 3 Spalten weiter rechts ein. Bedingung ist, dass die Reihenfolge der Bilder verändert wird.


Anzeige
AW: Bild an bestimmter Position einfügen
17.07.2020 07:54:49
Steph
Hallo Beverly,
vielen Dank für deine Antwort und sorry für die späte Rückmeldung, ich lag leider flach.
Bei deiner Lösung werden die Bilder einfach immer in Zeile 46 übereinander eingefügt und nicht nebeneinander. Weißt du wodran das liegen könnte?
AW: Bild an bestimmter Position einfügen
17.07.2020 08:27:08
Beverly
Hi Steph,
ändere diesen Teil:
        For Each shaShape In ActiveSheet.Shapes
If shaShape.TopLeftCell.Row = 46 Then strSpalte = _
shaShape.TopLeftCell.Offset(0, 3).Address
Next shaShape


AW: Bild an bestimmter Position einfügen
17.07.2020 09:42:29
Steph
Hi Beverly,
die Bilder werden immernoch in Zelle J40 übereinander eingefügt :( #
Ich schreibe dir nochmal den Code, nicht das sich dort vielleicht ein Fehler eingeschlichen hat.
Private Sub CommandButton3_Click()
Dim sPicture As String, pic As Picture
Dim strSpalte As String, shaShape As Shape
strSpalte = "J46"
If ActiveSheet.Shapes.Count > 0 Then
For Each shaShape In ActiveSheet.Shapes
If shaShape.TopLeftCell.Row = 46 Then strSpalte = _
shaShape.TopLeftCell.Offset(0, 3).Address
Next shaShape
End If
sPicture = Application.GetOpenFilename _
("Pictures (*.gif; *.jpg; *.bmp; *.tif), *.gif; *.jpg; *.bmp; *.tif", _
, "Select Picture to Import")
If sPicture = "False" Then Exit Sub
Set pic = Sheets("Auswertung").Pictures.Insert(sPicture)
With pic
.ShapeRange.LockAspectRatio = msoFalse
.Top = Range(strSpalte).Top
.Left = Range(strSpalte).Left
.Height = Range(strSpalte).Height
.Width = Range(strSpalte).Width
.Placement = xlMoveAndSize
End With
Set pic = Nothing
End Sub

Anzeige
AW: Bild an bestimmter Position einfügen
17.07.2020 11:00:37
Beverly
Hi Steph,
das kann ich nicht nachvollziehen (ebenfalls Excel2016). Ich habe den Code aus deinem Beitrag jetzt auch in Excel2007, Excel2010 und Excel2013 (alle im Originalzustand) testen lassen - die Bilder werden korrekt jeweils um 3 Spalten versetzt eingefügt - es liegt also nicht am Code selbst.
Du kannst den Code aber mal im Einzelschrittmodus mit F8 durchgehen und sehen, ob die Bilder dann korrekt positioniert werden. Falls ja, kannst du am Ende des Codes mal die Zeile DoEvents ergänzen - vielleicht hilft das.


Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige
Archiv - Verwandte Themen