AW: Bild über VBA in einer Zelle einfügen
22.03.2021 08:27:09
volti
Hallo Christian,
bei größeren Bildern (höher als der Bildschirm) wird bei Deiner Datei (warum auch immer) die Y-Position nicht angepasst.
Ich habe die Positionierung jetzt noch mal nach der Verkleinerung wiederholt. Dann geht es.
In meinen anderen Dateien klappt die Positionierung auch vor der Verkleinerung.
Hier noch mal ein überarbeitetes Makro:
Code:
[Cc][+][-]
Option Explicit
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Not Intersect(Target, Range("D2:F10")) Is Nothing Then
Call Bild_Einfuegen_und_Anpassen_aus_Datei(Target)
Cancel = True
End If
End Sub
Sub Bild_Einfuegen_und_Anpassen_aus_Datei(Target As Range)
' Sub fügt ein Bild in eine Zelle/Bereich ein
' Eingefügt an selektierter Stelle, Höhe/Breite werden angepasst
Dim oPic As Object
Dim sPicFile As String
sPicFile = Application.GetOpenFilename _
("Pictures (*.gif; *.jpg; *.bmp; *.tif; *.jxr), *.gif; *.jpg; *.bmp; *.tif; *.jxr", _
, "Bild auswählen")
If sPicFile = "Falsch" Then Exit Sub
' Bild einfügen in linke obere Ecke, Originalgröße
Set oPic = ActiveSheet.Shapes.AddPicture(sPicFile, _
False, True, Target.Left + 1, Target.Top + 1, -1, -1)
If Not oPic Is Nothing Then
If oPic.Width > oPic.Height Then ' Querformat
oPic.Width = Target.Width - 2
If oPic.Height > Target.Height Then oPic.Height = Target.Height - 2
Else
oPic.Height = Target.Height - 2 ' Hochformat
If oPic.Width > Target.Width Then oPic.Width = Target.Width - 2
End If
oPic.Left = Target.Left + 1
oPic.Top = Target.Top + 1
Set oPic = Nothing
End If
End Sub
_________________________
viele Grüße aus Freigericht 😊
Karl-Heinz