Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Bild an bestimmter Position einfügen

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
Anzeige

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


Anzeige
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
Anzeige

Infobox / Tutorial

Bild an bestimmter Position einfügen in Excel


Schritt-für-Schritt-Anleitung

Um ein Bild an einer bestimmten Position in Excel einzufügen, kannst du VBA (Visual Basic for Applications) verwenden. Hier ist eine Schritt-für-Schritt-Anleitung:

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Füge ein neues Modul ein: Klicke mit der rechten Maustaste auf "VBAProject (dein Dokument)", wähle "Einfügen" und dann "Modul".

  3. Kopiere und füge den folgenden Code ein:

    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
  4. Füge einen Button auf deinem Arbeitsblatt hinzu und verknüpfe ihn mit der oben erstellten Subroutine.

  5. Jetzt kannst du ein Bild auswählen, und es wird an der festgelegten Position eingefügt.


Häufige Fehler und Lösungen

  • Bild wird immer in der gleichen Zelle eingefügt: Stelle sicher, dass der Code den Offset korrekt berechnet. Prüfe den Teil, wo strSpalte gesetzt wird:

    If shaShape.TopLeftCell.Row = 46 Then strSpalte = shaShape.TopLeftCell.Offset(0, 3).Address
  • Bild wird nicht eingefügt: Überprüfe, ob der Dateipfad korrekt ist und ob du die richtige Bilddatei auswählst (z.B. ein Excel GIF einfügen).


Alternative Methoden

Eine andere Möglichkeit, Bilder einzufügen, besteht darin, die Bilder direkt aus einer Zelle heraus zu referenzieren. Du könntest auch eine Kombination aus Excel und Word VBA verwenden, um Text an einer bestimmten Stelle einzufügen und Bilder zu positionieren.


Praktische Beispiele

  • Beispiel 1: Um ein Bild in Zelle J46 einzufügen und beim nächsten Klick in M46, kannst du den Offset um 3 Spalten nutzen.

  • Beispiel 2: Wenn du ein GIF in Excel einfügen möchtest, stelle sicher, dass das Bildformat in der Auswahl erlaubt ist.


Tipps für Profis

  • Verwende DoEvents am Ende deines Codes, um sicherzustellen, dass Excel alle Operationen korrekt ausführt, bevor es mit weiteren Prozessen fortfährt.

    DoEvents
  • Speichere den aktuellen Offset-Wert in einer Zelle, um sicherzustellen, dass die Position auch nach dem Schließen des Dokuments erhalten bleibt.


FAQ: Häufige Fragen

1. Wie kann ich sicherstellen, dass Bilder immer an der gleichen Stelle eingefügt werden? Verwende eine Zelle zur Speicherung der Spaltennummer, um den Offset zu steuern.

2. Kann ich auch animierte GIFs in Excel einfügen? Ja, du kannst GIFs wie jedes andere Bild einfügen. Achte jedoch darauf, dass die Animation in Excel nicht abgespielt wird.

3. Was mache ich, wenn der Code nicht funktioniert? Gehe den Code Schritt für Schritt im Debugging-Modus durch (F8), um zu sehen, an welcher Stelle es nicht funktioniert.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige