AW: per VBA Bild laden / anpassung ?
22.12.2010 07:09:38
amintire
Hallo Hajo,
ich habe mich für diese Variante im Code entschieden, aber wie kann ich am besten diesen Makro "BildAnpassen" in deinem Code einfügen bzw. anpassen?
Sub BildAnpassen()
'aufgezeichnet von Zehra Agic 16.07.2010
With ActiveSheet.Shapes(2)
.LockAspectRatio = msoFalse
.Left = [D2].Left
.Top = [D2].Top
.Width = [D2:N2].Width
.Height = [D2].Height
End With
End Sub
Option Explicit ' Variablendefinition erforderlich
Private Sub Worksheet_Change(ByVal Target As Range)
Dim StOrdner As String ' Variable Ordner Bildablage
Dim StBild As String ' Variable Bildname
Dim InI As Integer ' Variable Schleifenzähler
Dim RaBereich As Range ' Variable Bereich der Gültigkeit
Dim RaZelle As Range ' Variable bearbeitete Zelle
Dim LoBreite As Long ' Variable Bildbreite
Dim LoHoehe As Long ' Variable Bildhöhe
' Ordner Bildablage
StOrdner = ThisWorkbook.Path & "\de-Bilder\"
Set RaBereich = Range("A3") ' Bereich der Wirksamkeit
Set RaBereich = Intersect(RaBereich, Range(Target.Address))
If Not RaBereich Is Nothing Then ' falls nicht gefunden wird sub verlassen
For Each RaZelle In RaBereich ' Schleife über alle veränderten Zellen
' Reaktion auf Zellveränderung abschalten
Application.EnableEvents = False
RaZelle.Offset(0, 1) = "" ' Inhalt der Zelle neben Bildnamen löschen
' Reaktion auf Zellveränderung einschalten
Application.EnableEvents = True
' Bildname erstellen
StBild = "Bild " & RaZelle.Address(False, False)
' altes Bild löschen von jinx
For InI = ActiveSheet.Shapes.Count To 1 Step -1
If ActiveSheet.Shapes(InI).Name = StBild Then
ActiveSheet.Shapes(InI).Delete
Exit For
End If
Next
If RaZelle.Value "" Then ' eine Eingabe ist vorhanden
' Bildname einschl. Ordner erstellen
StBild = StOrdner & Format(RaZelle.Value, "00000") & ".jpg"
If Dir(StBild) = "" Then ' Prüfung ob Bild vorhanden
' Reaktion auf Zellveränderung abschalten
Application.EnableEvents = False
' Bild nicht vorhanden
Target.Offset(0, 1) = "kein Bild vorhanden!"
' Reaktion auf Zellverändeung einschalten
Application.EnableEvents = True
Else ' Bild vorhanden
' Bildgröße und Bild bei Position einfügen
Select Case Target.Address(False, False)
Case "A3"
LoBreite = 60
LoHoehe = 60
' einfügen ohne select von Bert Körn
' Ausdruck.AddPicture(FileName, Verknüpfung,
' in Mappe speichern,
' Pos. Links, Pos. Oben, Breite, Höhe)
' von Klausimausi64 Bildname
' erstes Offset Pos. Links 0 Zeilen und
' eine Spalte nach rechts
' zweites Offset Pos. Oben 0 Zeilen tiefer
' und 0 Spalten nach rechts
ActiveSheet.Shapes.AddPicture(StBild, True, True, _
RaZelle.Offset(0, 0).Left, _
RaZelle.Offset(5, 0).Top, LoBreite, _
LoHoehe).Name = "Bild " _
& RaZelle.Address(False, False)
End Select
End If
End If
Next RaZelle
End If
Set RaBereich = Nothing ' Variable leeren
End Sub
Lieben Gruß
Amina
(Frohe Weihnachten...)