Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1488to1492
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
Inhaltsverzeichnis

Bild aus der Zelle ansprechen in VBA

Bild aus der Zelle ansprechen in VBA
28.04.2016 21:18:14
Klexy
Moin.
Ich habe in Zelle B5 ein Bild. Es klebt in der linken oberen Ecke der Zelle.
Ich weiß nicht, wie das Bildobjekt heißt ("Picture 27" oder so).
Das einzige was ich weiß ist B5.
Wie kann ich das Bild in VBA ansprechen?
Oder anders gesagt: wie kann ich eine Spalte nach Zellen durchforsten, die ein Bild enthalten und das dann in eine neue Zelle verschieben?

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Bild aus der Zelle ansprechen in VBA
29.04.2016 00:55:41
fcs
Hallo klexy,
hier mal das Grundgerüst für so eine Verschiebe-Aktion.
In dem Beispiel werden die Bilder im aktiven Blatt im Bereich B1:B100 gesucht und nach Tabelle2 in die Spalte C verschoben.
Gruß
Franz
Sub ShapesMove()
Dim objBild As Shape, rngZelle As Range
Dim zeileZ As Long
zeileZ = 2
For Each rngZelle In ActiveSheet.Range("B1:B100")
Set objBild = GetShapeinZelle(Zelle:=rngZelle, bolMsg:=False)
If Not objBild Is Nothing Then
MsgBox "Shape-Name in " & rngZelle.Address(False, False, xlA1) & ": " _
& objBild.Name
'Bild Verschieben (Ausschneiden nd Einfügen)
objBild.Cut
With Worksheets("Tabelle2")
.Paste
.Shapes(.Shapes.Count).Top = .Cells(zeileZ, 3).Top + 2
.Shapes(.Shapes.Count).Left = .Cells(zeileZ, 3).Left + 2
zeileZ = zeileZ + 1
End With
End If
Next rngZelle
End Sub
Function GetShapeinZelle(Zelle As Range, Optional bolMsg As Boolean) As Shape
Dim objShape As Shape
For Each objShape In ActiveSheet.Shapes
If objShape.TopLeftCell.Address = Zelle.Address Then
Set GetShapeinZelle = objShape
Exit For
End If
Next
If GetShapeinZelle Is Nothing And bolMsg = True Then
MsgBox "Kein Bild (Shape) in Zelle """ & Zelle.Address(False, False, xlA1) _
& """ vorhanden", _
vbOKOnly, "Finde Shape"
End If
End Function

Anzeige
AW: Bild aus der Zelle ansprechen in VBA
01.05.2016 03:12:06
Klexy
Hallo Franz,
danke. Mit etwas Tüfteln konnte ich es auf meine Bedürfnisse anpassen.
Es weiß also nur das Bild, in welcher Zelle es ist und nicht die Zelle, dass und welches Bild in ihr ist?

Alternative
29.04.2016 15:51:22
Michael
Hi zusammen,
Franz' Beispiel läuft natürlich bei der geschilderten Problemstellung völlig zufriedenstellend.
Als Fan von Dictionaries hat es mich gejuckt, das mal mit richtig vielen (naja) Daten zu testen, und dann is es natürlich geschickter, alle Shapes nur einmal einzulesen und ein Array zurückzugeben, das man in der aufrufenden Prozedur nach Gusto verwurschteln kann - ich schreibe die Ausgabe halt mal einfach weg.
Die Grafiken sind eine durch unsere "Blaue Nacht" angeregte Spielerei: mir gefällt das Moiré so gut (wenn es denn eines ist).
Die Datei: https://www.herber.de/bbs/user/105342.xlsm
Schöne Grüße,
Michael
P.S.: den Code, mit dem ich das Ding erzeugt habe, habe ich mal weggelassen, aber auf Nachfrage...
P.P.S.: Daß jeweils viele der Grafiken an "einer" Zelle kleben, ist nicht verwunderlich, denn die Shapes je eines Kreises werden immer an die gleiche Position geschrieben, nur die Winkel ändern sich.
Schön nachzuvollziehen ist das, wenn man den letzten Parameter (wierum) auf True setzt.

Anzeige
AW: Alternative
01.05.2016 03:17:10
Klexy
Hallo Michael,
damit kann ich nichts anfangen. Das versteh ich nicht und hab grad keine Zeit, mich reinzuarbeiten.
Trotzdem danke.

AW: Alternative
01.05.2016 14:00:39
Michael
Hi,
bist Du nicht der Klexy aus Nürnberg?
Wenn Du eh keine Zeit hast, Dich zu vertiefen, spare ich mir weitere Erklärungen: Franz' Variante läuft ja sicher zufriedenstellend.
Vielen Dank für die Rückmeldung & schöne Grüße,
Michael

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige