Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1868to1872
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 einfügen und an Zelle anpassen
20.02.2022 21:48:59
Ulla
Hallo,
Ich beziehe mich hier auf einen Beitrag vom 27.04.2017 (Frage von Enrico, Antwort Karl-Heinz Voltmann)
Das war genau das, was ich gesucht hatte, nur wollte ich die Grafik per Steuerelement auf ein anderes Tabellenblatt kopieren.
Ich hab's umgeschrieben und es hat geklappt - dafür sag ich hier noch einmal "Danke"!
Nun hab ich allerdings ein weiteres Problem: ich möchte mit einem weiteren Steuerelement die Grafik in 2 Zellen einbetten.
Ich dachte, wenn ich beide Zellen anspreche, würde es funktioniere. Das war zu einfach gedacht - es wird nur in B2 kopiert, nicht in B4.
Ich brauch das dann auch noch für 3 Zellen (B2, B4 und B6) und noch für 4 Zellen (B2, B4, B6, B8).
Für Hilfe wäre ich dankbar, ich hänge fest...
Viele Grüße
Ulla H.

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Bild einfügen und an Zelle anpassen
20.02.2022 22:50:44
volti
Hallo Ulla,
ich weiß nicht, ob ihr Dir jetzt genau folgen kann,
ich möchte mit einem weiteren Steuerelement die Grafik in 2 Zellen einbetten.
Hierfür kannst Du, wenn Du das bisherige Makro weiternutzen möchtest, die ActiveCell einfach durch Selection ersetzen.
Hierbei wäre dann z.B. "B2:B3" markiert, evtl. auch als verbundene Zellen, das Ziel.
In B2 und B4 kann man kein Bild einfügen, oder wolltest Du ein Bild zweimal einfügen?
Da müsste man dann z.B. eine Schleife "For Each" programmieren
Code:

[Cc][+][-]

Sub Bild_einfügen_und_Bildgröße_anpassen1() ' Bild aus Zwischenspeicher einfügen Dim X As Long, Y As Long, H As Long, B As Long Dim rZelle As Range For Each rZelle In Selection With rZelle X = .Left: Y = .Top: H = .Height: B = .Width End With ActiveSheet.Paste If TypeName(Selection) = "Picture" Then With Selection.ShapeRange .LockAspectRatio = False .Left = X: .Top = Y: .Height = H: .Width = B End With End If Next rZelle End Sub Sub Bild_einfügen_und_Bildgröße_anpassen2() ' Bild aus Zwischenspeicher einfügen Dim X As Long, Y As Long, H As Long, B As Long, R1 As Double, R2 As Double Dim rZelle As Range For Each rZelle In Selection With rZelle X = .Left: Y = .Top: H = .Height: B = .Width End With ActiveSheet.Paste If TypeName(Selection) = "Picture" Then With Selection.ShapeRange .LockAspectRatio = True .Left = X: .Top = Y R1 = .Width / B: R2 = .Height / H If R1 < R2 Then .Height = H Else .Width = B End If .Left = X + ((B - .Width) &bsol; 2): .Top = Y + ((H - .Height) &bsol; 2) End With End If Next rZelle End Sub

Code:

[Cc][+][-]

Sub Bild_einfügen_und_Bildgröße_anpassen1() ' Bild aus Zwischenspeicher einfügen Dim X As Long, Y As Long, H As Long, B As Long With Selection X = .Left: Y = .Top: H = .Height: B = .Width End With ActiveSheet.Paste If TypeName(Selection) = "Picture" Then With Selection.ShapeRange .LockAspectRatio = False .Left = X: .Top = Y: .Height = H: .Width = B End With End If End Sub Sub Bild_einfügen_und_Bildgröße_anpassen2() ' Bild aus Zwischenspeicher einfügen Dim X As Long, Y As Long, H As Long, B As Long, R1 As Double, R2 As Double With Selection X = .Left: Y = .Top: H = .Height: B = .Width End With ActiveSheet.Paste If TypeName(Selection) = "Picture" Then With Selection.ShapeRange .LockAspectRatio = True .Left = X: .Top = Y R1 = .Width / B: R2 = .Height / H If R1 < R2 Then .Height = H Else .Width = B End If .Left = X + ((B - .Width) &bsol; 2): .Top = Y + ((H - .Height) &bsol; 2) End With End If End Sub

_________________________
viele Grüße aus Freigericht 😊
Karl-Heinz

Anzeige
AW: Bild einfügen und an Zelle anpassen
21.02.2022 17:39:38
Ursula
Hallo Karl-Heinz,
Vielen Dank für Deine Antwort - ich kann das allerdings noch nicht ganz nachvollziehen...muss mich erst 'reindenken' (Ich bearbeite dieses Projekt zusätzlich/nebenbei).
Aber um Deine letzte Frage gleich vorweg zu nehmen: Ja, ich möchte die gleiche Grafik 2x einfügen (und auch 3x und auch 4x).
Hier mein "jetziges" Makro dazu (für 1 Bild):

Sub EinzweierSchild()
' EinzweierSchild Makro
Range("B20:I28").Select
Selection.Copy
Sheets("Druckvorschau Schilder").Select
Range("B2").Select
Dim X As Long, Y As Long, H As Long, B As Long
With ActiveCell
X = .Left: Y = .Top: H = .Height: B = .Width
End With
ActiveSheet.Pictures.Paste.Select
If TypeName(Selection) = "Picture" Then
With Selection.ShapeRange
.LockAspectRatio = False
.Left = X: .Top = Y: .Height = H: .Width = B
End With
End If
Range("A1").Select
Sheets("Format").Select
Range("A1").Select
Application.CutCopyMode = False
ActiveCell.FormulaR1C1 = ""
Range("A1").Select
End Sub
Ich wäre dankbar, wenn Du mir das mit der Schleife noch mal erklären könntest...
Viele Grüße
Ulla
Anzeige
AW: Bild einfügen und an Zelle anpassen
21.02.2022 19:29:28
volti
Hallo Ulla,
Du hättest einfach den ersten Code mal ausprobieren brauchen, da habe ich schon eine For Each-Schleife eingebaut.
Diese Schleife geht alle markierten Felder durch und fügt dort in jedes Feld immer wieder die gleiche Grafik ein.
Also, alle gewünschten Felder markieren (2, 4 oder 20) und Makro laufen lassen.
Oder, falls Du es nicht extra markieren möchtest, kannst Du auch gleich eine Range angeben, Beispiel:
For Each rZelle In Range("B2,B4,B6")
Gruß
Karl-Heinz
AW: Bild einfügen und an Zelle anpassen
21.02.2022 20:25:13
Ulla
Hallo Karl-Heinz,
Danke für die Antwort !!!- Ich krieg es nicht hin...:-(
Entweder fügt er gar nichts ein oder die Zelle über 20 Zellen verteilt...
Ich geb für heute (mal wieder) auf.
Versuch es morgen noch einmal
Viele Grüße
Ulla
Anzeige
AW: Bild einfügen und an Zelle anpassen
25.02.2022 13:35:57
Ulla
Hallo Karl Heinz,
Da bin ich wieder...
Ich glaube, ich hab (einen möglichen) Fehler.
Jedes Mal wenn ich per Makro eine Grafik "überführe", d.h. die Zelle (samt Inhalten + Textboxen) von Tabellenblatt 2 auf Tabellenblatt 3 als Grafik switche,
bekommt dieses ja eine neue Bezeichnung (Picture 16, Picture 17,...)
Da die Zelle auf Tabellenblatt 2 aber ständig bearbeitet und verändert wird, wird sie ja auch immer wieder neu auf Tabellenblatt 3 "geschickt.
Im weiteren Verlauf erkennt das Makro dann Picture 16 nicht mehr.
Gibt es eine allgemein gültige Bezeichnung für die "Pictures"?
Anzeige
AW: Bild einfügen und an Zelle anpassen
25.02.2022 16:59:07
volti
Hallo Ulla,
Du könntest den Grafiken einen eindeutige Namen geben. Am einfachsten ist die Zellbezeichnung der Zelle, wo die Grafik eingefügt wird.
Ggf. könnte vor der Einfügung somit auch geprüft werden, ob sich schon eine Grafik in der Zelle befindet.
Code:

[Cc]

Sub Bild_einfügen_und_Bildgröße_anpassen1() ' Bild aus Zwischenspeicher einfügen Dim X As Long, Y As Long, H As Long, B As Long Dim rZelle As Range For Each rZelle In Selection With rZelle X = .Left: Y = .Top: H = .Height: B = .Width End With ActiveSheet.Paste If TypeName(Selection) = "Picture" Then With Selection.ShapeRange .Name = "Bild " & rZelle.Address(0, 0) .LockAspectRatio = False .Left = X: .Top = Y: .Height = H: .Width = B End With End If Next rZelle End Sub

_________________________
viele Grüße aus Freigericht 😊
Karl-Heinz

Anzeige

315 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige