Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

VBA:Bild einfügen und löschen
#1
Guten Tag liebe Community,

folgende Herausforderungen sind für mich alleine nicht zu bewältigen.
Ich habe eine Maske mit zwei ComboBoxen und beim jeweiligen wählen  der Combobox wird jeweils  ein Bild in jeweiligen Zellen eingefügt. Das hab ich soweit geschafft, aber das Problem ist wenn ich ein anderes Bild wähle löscht er das vorhandene Bild nicht.

Zudem möchte ich auch, dass man das gewählte Bild auch in der Maske sieht.

Damit ihr genau wisst was ich meine hab ich eine Beispieldatei angehängt.

Schöne Grüße Joe


Angehängte Dateien
.xlsm   image_userform_bsp.xlsm (Größe: 36,08 KB / Downloads: 15)
Antworten Top
#2
Hallo Joe,

mal nur der Teil mit dem Löschen (das mit der Maske habe ich überlesen :20: )

Code:
Private Sub cboAuto_Change()

Worksheets("Tabelle1").Range("A1") = Me.cboAuto.Value



Dim shpPicture As Shape
Application.ScreenUpdating = False

For Each shpPicture In ActiveSheet.Shapes
   If shpPicture.TopLeftCell.Address(0, 0) = "A6" Then shpPicture.Delete
Next shpPicture
'Sheets("Tabelle1").Range("A6").ClearContents

'Schleife um alle Bilder im Blatt "Tabelle1" zu löschen
'       Worksheets("Tabelle1").Range("A6").Delete
      
'Bild dessen Namen in Zelle A1 steht kopieren...
Sheets("Tabelle2").Shapes(Sheets("Tabelle1").Range("A1")).Copy
'...und in Zelle A6 einfügen
Sheets("Tabelle1").Range("A6").PasteSpecial Paste:=xlPasteValues
'Setenverhältnis der Grafik ausschalten und Größe verändern
With Selection
    .ShapeRange.LockAspectRatio = msoFalse
    .ShapeRange.Height = 100 'Bildhöhe
    .ShapeRange.Width = 200  'Bildbreite
End With
Application.ScreenUpdating = True

End Sub

Private Sub cboFormel_Change()

Worksheets("Tabelle1").Range("E1") = Me.cboFormel.Value



Dim shpPicture As Shape
Application.ScreenUpdating = False

For Each shpPicture In ActiveSheet.Shapes
   If shpPicture.TopLeftCell.Address(0, 0) = "E6" Then shpPicture.Delete
Next shpPicture

'Sheets("Tabelle1").Range("E6").ClearContents

'Schleife um alle Formeln im Blatt "Tabelle1" zu löschen
'Worksheets("Tabelle1").Range("E6").Delete

'Bild dessen Namen in Zelle E1 steht kopieren...
Sheets("Tabelle2").Shapes(Sheets("Tabelle1").Range("E1")).Copy
'...und in Zelle E6 einfügen
Sheets("Tabelle1").Range("E6").PasteSpecial Paste:=xlPasteValues
'Setenverhältnis der Grafik ausschalten und Größe verändern
With Selection
    .ShapeRange.LockAspectRatio = msoFalse
    .ShapeRange.Height = 50 'Bildhöhe
    .ShapeRange.Width = 100  'Bildbreite
End With
Application.ScreenUpdating = True




End Sub
Gruß Stefan
Win 10 / Office 2016
Antworten Top
#3
Moin Stefan,

der Code funktioniert nicht 22 .

Oder gibt es da zu meinem Problem eine komplett andere vorangehensweise und wenn ja welche?

Gruß Joe
Antworten Top
#4
Hallo Joe,

befinden sich die Bilder jeweils in A6 bzw. E6? Teste mal, indem Du das Bild markierst und im Direkfenster

Code:
?selection.topleftcell.address

einträgst und auf Return drückst. Was wird dir zurückgegeben?
Gruß Stefan
Win 10 / Office 2016
Antworten Top
#5
Hallo Joe,

ich habe den Code nochmal umgearbeitet.

Code:
Private Sub cboAuto_Change()
Dim shpPicture As Shape

Worksheets("Tabelle1").Range("A1") = Me.cboAuto.Value

Application.ScreenUpdating = False

For Each shpPicture In ActiveSheet.Shapes
   If Not Intersect(Range(shpPicture.TopLeftCell.Address), Cells(5, 1).Resize(3)) Is Nothing Then shpPicture.Delete
Next shpPicture
'Sheets("Tabelle1").Range("A6").ClearContents

'Schleife um alle Bilder im Blatt "Tabelle1" zu löschen
'       Worksheets("Tabelle1").Range("A6").Delete
      
'Bild dessen Namen in Zelle A1 steht kopieren...
Sheets("Tabelle2").Shapes(Sheets("Tabelle1").Range("A1")).Copy
'...und in Zelle A6 einfügen
Sheets("Tabelle1").Range("A6").PasteSpecial Paste:=xlPasteValues
'Setenverhältnis der Grafik ausschalten und Größe verändern
With Selection
    .ShapeRange.LockAspectRatio = msoFalse
    .ShapeRange.Height = 100 'Bildhöhe
    .ShapeRange.Width = 200  'Bildbreite
End With
Application.ScreenUpdating = True

End Sub

Private Sub cboFormel_Change()
Dim shpPicture As Shape

Worksheets("Tabelle1").Range("E1") = Me.cboFormel.Value

Application.ScreenUpdating = False

For Each shpPicture In ActiveSheet.Shapes
   If Not Intersect(Range(shpPicture.TopLeftCell.Address), Cells(5, 4).Resize(3, 2)) Is Nothing Then shpPicture.Delete
Next shpPicture

'Sheets("Tabelle1").Range("E6").ClearContents

'Schleife um alle Formeln im Blatt "Tabelle1" zu löschen
'Worksheets("Tabelle1").Range("E6").Delete

'Bild dessen Namen in Zelle E1 steht kopieren...
Sheets("Tabelle2").Shapes(Sheets("Tabelle1").Range("E1")).Copy
'...und in Zelle E6 einfügen
Sheets("Tabelle1").Range("E6").PasteSpecial Paste:=xlPasteValues
'Setenverhältnis der Grafik ausschalten und Größe verändern
With Selection
    .ShapeRange.LockAspectRatio = msoFalse
    .ShapeRange.Height = 50 'Bildhöhe
    .ShapeRange.Width = 100  'Bildbreite
End With
Application.ScreenUpdating = True

End Sub
Gruß Stefan
Win 10 / Office 2016
[-] Folgende(r) 1 Nutzer sagt Danke an Steffl für diesen Beitrag:
  • Joe
Antworten Top
#6
Hey Stafan,

ich hab dein Code ausprobiert und der funktioniert super, DANKE!

Eine Frage was bedeutet Resize in dem Zusammenhang genau hab den Befehl nachgooglet, aber der Sinn erschließt mir noch nicht ganz.

Gruß Joe
Antworten Top
#7
Hey,

ich versuche immernoch ein Bild in der Userform anzuzeigen, aber irgendwie klappt es bei mir nicht.


Code:
With UserForm1
.Image1.Picture = LoadPicture(Worksheets("Tabelle1").Cells(5, 1))
.Image1.PictureSizeMode = fmPictureSizeModeZoom
End With
Was mache ich falsch?

Gruß Joe
Antworten Top
#8
(19.10.2015, 08:31)Joe schrieb: Eine Frage was bedeutet Resize in dem Zusammenhang genau hab den Befehl nachgooglet, aber der Sinn erschließt mir noch nicht ganz.

Hallo Joe,

da brauchst Du nicht googlen, sondern nur den Cursor darauf setzen und F1 drücken! Wink

Gruß Uwe
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste