Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Namen eingefügter Shapes ermitteln

Namen eingefügter Shapes ermitteln
12.07.2024 14:43:06
Siegfried
Hallo zusammen,

im Zusammenhang mit der Fußball EM 2024 möchte die Flaggen der jeweiligen Länder einfügen.
Dazu habe ich den folgenden Code, der auch funktioniert:

Sub Flaggen_GruppeA()
Dim n1 As Integer, n2 As Integer
Dim Land As String
Dim FlagName As Variant
Dim FlagBereich As Range
Dim myDocument As Worksheet
Dim arrShapes As Variant, Shapes As Object

Set myDocument = Worksheets(1)
Set FlagBereich = Range("Länder_Flaggen")

' vorhandene Flaggen löschen
For n1 = 1 To 4
On Error Resume Next
If Range("GruppeA.Flag").Offset(n1, 0).Value > "" Then
ActiveSheet.Shapes(Range("GruppeA.Flag").Offset(n1, 0).Value).Delete
Range("GruppeA.Flag").Offset(n1, 0).Clear
End If
Next

' BildName in Array einlesen
ReDim arrShapes(1 To FlagBereich.Count)
For n1 = 1 To FlagBereich.Count
arrShapes(n1) = Range("Flag.Name").Offset(n1, 0).Value
Next n1

' Bild auswählen
For n1 = 1 To 4
Land = Range("GruppeA.Land").Offset(n1, 0).Value
Tabelle1.Activate ' Länder
For n2 = 1 To FlagBereich.Count
If Range("Land.Name").Offset(n2, 0).Value = Land Then
FlagName = Range("Flag.Name").Offset(n2, 0).Value
ActiveSheet.Shapes(Range("Flag.Name").Offset(n2, 0).Value).Copy
End If
Next n2
Tabelle4.Activate ' Gruppenspiele
Range("GruppeA.Flag").Offset(n1, 0).Select
ActiveCell = ActiveSheet.Paste

' Bild erhält dabei einen neuen Namen
' neuen BildNamen in ActiveCell notieren

Next n1
End Sub

Das eingefügte Bild erhält bei dieser Aktion einen neuen Namen, den ich in der activen Zelle notieren möchte.

Wie muss ich das anstellen?

Gruß
Siegfried
Anzeige

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Namen eingefügter Shapes ermitteln
12.07.2024 17:43:20
Beverly
Hi Siegfried,

nach diesem Prinzip:

ActiveSheet.Shapes(ActiveSheet.Shapes.Count).Name = "Zuletzt eingefügt"


Bis später
Karin

Link zur Homepage: https://excel-inn.de/
AW: Namen eingefügter Shapes ermitteln
13.07.2024 14:20:27
daniel
Hi
Nach einem .Paste ist in der Regel das neu eingefügte Objekt auch selektiert
Du solltest also nach dem Paste den Namen dieses Objektes mit Selection.Name ermitteln können.
Gruß Daniel
Anzeige
AW: Namen eingefügter Shapes ermitteln
13.07.2024 15:20:32
Siegfried
Hi Daniel, Hi Karin,

ich habe den Code mit der folgenden Zeile ergänzt:
Range("GrA.Flag").Offset(n1, 0).Value = Selection.Name

In die betreffende Zeile schreibt der Code nur das Wort "WAHR" aber nicht den neuen Namen der eingefügten Flagge.
Wenn ich den Code erneut auslöse, bleiben die alten Flaggen stehen und die neuen werden darüber eingefügt.

Den Code habe ich an anderer Stelle auch verwendet und da schreibt er mir auch den neuen Namen.
Der Unterschied ist, dass ich die Flaggen dort im selben Arbeitsblatt habe und nicht wie hier in einem eigenen.

Karin:
sieh es mir bitte nach, dass ich mich vielleicht umständlich ausgedrückt habe oder nicht klar genug meine Frage formuliert habe.

Sub Flaggen_GruppeA()
Dim n1 As Integer, n2 As Integer
Dim Land As String
Dim FlagName As Variant
Dim FlagBereich As Range
Dim myDocument As Worksheet
Dim arrShapes As Variant, Shapes As Object, shp As Shape

Set myDocument = Worksheets(1)
Set FlagBereich = Range("Länder_Flaggen")

' vorhandene Flaggen löschen
For n1 = 1 To 4
On Error Resume Next
If Range("GruppeA.Flag").Offset(n1, 0).Value > "" Then
ActiveSheet.Shapes(Range("GruppeA.Flag").Offset(n1, 0).Value).Delete
Range("GruppeA.Flag").Offset(n1, 0).Clear
End If
Next

' BildName in Array einlesen
ReDim arrShapes(1 To FlagBereich.Count)
For n1 = 1 To FlagBereich.Count
arrShapes(n1) = Range("Flag.Name").Offset(n1, 0).Value
Next n1

' Bild auswählen
For n1 = 1 To 4
Land = Range("GruppeA.Land").Offset(n1, 0).Value
Tabelle1.Activate ' Länder
For n2 = 1 To FlagBereich.Count
If Range("Land.Name").Offset(n2, 0).Value = Land Then
FlagName = Range("Flag.Name").Offset(n2, 0).Value
ActiveSheet.Shapes(Range("Flag.Name").Offset(n2, 0).Value).Copy
End If
Next n2
Tabelle4.Activate ' Gruppenspiele
Range("GruppeA.Flag").Offset(n1, 0).Select
' Bild einfügen und Namen notieren
ActiveCell = ActiveSheet.Paste
Range("GrA.Flag").Offset(n1, 0).Value = Selection.Name

' Bild erhält dabei einen neuen Namen
' neuen BildNamen in ActivCell notieren

' ' von Karin
' ActiveSheet.Shapes(ActiveSheet.Shapes.Count).Name = "zuletzt eingefügt"
Next n1
Anzeige
AW: Namen eingefügter Shapes ermitteln
12.07.2024 18:52:41
Siegfried
Hi Karin

Deinen Schnipsel werde ich noch testen.
Danke für Deine Antwort.

Gruß
Siegfried
AW: Namen eingefügter Shapes ermitteln
12.07.2024 19:19:04
Siegfried
Hi Karin

das klappt bei mir nicht.

For Each Shapes In Range("GruppeA_Flag")
Debug.Print ActiveSheet.Shapes(Range("GruppeA_Flag").Shapes.Count).Name
Next Shapes

Ich erhalte bei jedem Schleifendurchgang "Comment1", obwohl es eine Flagge (Shapes) ist.

Da muss ich noch weiter nach einer Lösung suchen.

Gruß
Siegfried
Anzeige
AW: Namen eingefügter Shapes ermitteln
12.07.2024 21:32:52
Beverly
Hi Siegfried,

du verwendest ja auch nicht meinen Code - bei mir steht in Klammern etwas anderes. Mein Code spricht jeweils das zuletzt eingefügte Shape an, und zwar weil ich davon ausgegangen, dass du es benennen willst sobald du eins neu eingefügt hast,

Bis später
Karin

Link zur Homepage: https://excel-inn.de/
Anzeige
AW: Namen eingefügter Shapes ermitteln
13.07.2024 12:51:55
Siegfried
Hi Karin,

Mit Deinen Schnipsel komme ich nicht weiter.
Deine Annahme, dass ich den Namen händisch eintrage, trifft nicht zu.
Vielmehr möchte ich den neu vergebenen Namen für die eingefügte Flagge per VBA ermitteln und in die aktive Zelle schreiben.

Meine Frage könnte ich auch genereller stellen.
Wie kann ich per VBA die Namen der Shapes bzw. Pictures nur aus einem bestimmten Zellbereich ermitteln?

Gruß
Siegfried
Anzeige
AW: Namen eingefügter Shapes ermitteln
13.07.2024 14:07:36
Beverly
Hi Siegfried,

leider verstehe ich nur Bahnhof. Niemand spricht davon, den Namen händisch einzutragen - ich habe nur gepostet, wie man dem zuletzt erstellten Shape einen Namen (woher auch immer der genommen werden soll!!) zuweist. So habe ich zumindest deine Frage verstanden...

Es geht also nicht darum dem zuletzt erstellten Shape einen Namen zugeben sondern den bereits vorhandenen Shapes den Namen aus z.B. der Nachbarzelle zuzuweisen?

Sub ShapesBenennen()

Dim shaShape As Shape
' Schleife über alle Shapes
For Each shaShape In ActiveSheet.Shapes
' Nachbarzelle rechts vom Shape ist nicht leer dann Name aus der rechten Nachbarzelle zuweisen
If shaShape.TopLeftCell.Offset(0, 1) > "" Then shaShape.Name = shaShape.TopLeftCell.Offset(0, 1).Value
Next shaShape
End Sub


Wenn du etwas anderes meinst dann musst du dich schon genauer, auch für einen Außenstehenden verständlich ausdrücken, was genau du eigentlich erreichen willst. Dein im 1. Beitrag geposteter Code sagt nicht viel, wenn man die dazugehörige Mappe mit den konkreten Bedingungen hicht kennt.

Bis später
Karin

Link zur Homepage: https://excel-inn.de/
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige