Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1268to1272
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

VBA: Name eines Shape-Objekts

VBA: Name eines Shape-Objekts
Günther
Hallo,
Beim Versuch per VBA zu ermitteln, ob es ein Shape-Objekt mit einem bestimmten Namen nicht mehr gibt, bin ich auf etwas gestoßen, dessen Logik sich mir nicht so recht erschließt. Würde mich freuen, wenn jemand einen Tipp für mich hat:
Wenn man die Erstellung eines Textfeldes aufzeichnet, bekommt es im Makro den Namen "Textbox 1" und im Namenfeld der Excel-Oberfläche den Namen "Textfeld 1". Diesen kann man anschließend per Namenfeld oder VBA-Befehl (ActiveSheet.Shapes(1).Name = "...") beliebig ändern, zB auf "Günther". Die Shapes-Auflistung enthält nun genau ein Element und folgende Befehle liefern:
ActiveSheet.Shapes(1).Name
ergibt: Günther (das ist logisch)
ActiveSheet.Shapes("Günther").Name
ergibt: Günther (das ist auch logisch)
ActiveSheet.Shapes("Textbox 1").Name
ergibt: Günther (das ist nicht logisch - zumindest nicht für mich - und mit meinem aktuellen Wissensstand ;-) ...
Gemäß meinem Verständnis, sollte beim dritten Befehl die übliche Fehlermeldung kommen, dass es in der Auflistung kein Element mit diesem Namen gibt.
Ist es so, dass jedes Shape zwei Namen besitzt?
Wie kann ich den "internen Namen" "Textbox 1" verändern oder abfragen?
Danke für alle Hinweise.
vg Günther

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
Wenn ich mich recht entsinne, ist es bei dieser...
24.06.2012 21:05:12
Luc:-?
…Art von Objekten so wie du vermutest, Günther.
Dieser „interne“ Name dürfte sich dann auch nicht verändern lassen, weil er wohl in bestimmten Situationen so benötigt wird. Die 2 Internnamen resultieren wohl aus lokaler und originaler Namensform, die übrigens (unter Xl9) exakt "Text Box 1" lautet. Solange kein individueller Name vergeben wurde, wird per VBA stets die originale Namensform wiedergegeben. Möglicherweise ist das mit der Caption-Eigenschaft von Formular­steuer­elementen vglbar, allerdings kann man da auch die Namen dauerhaft ändern.
Beide Namensformen, lokal und original, können neben dem evtl vergebenen Individualnamen (quasi „Caption“) und dem Index zur Ansprache eines Shapes benutzt wdn. Das gilt auch für andere Shape-Typen.
Gruß Luc :-?
Anzeige
AW: Wenn ich mich recht entsinne, ist es bei dieser...
26.06.2012 11:48:18
Günther
Hallo Luc,
Danke für Deine Antwort!
Ist Dir irgendeine Möglichkeit bekannt, diesen "internen" Namen gezielt abzufragen?
Also so etwas in der Art
ActiveSheet.Shapes("Günther").InternalName
und das ergibt dann:
"Textbox 1"
Oder geht da nur ein üblicher Schleifenansatz (zB wie folgt), der aber darauf basiert, das man die Struktur des Namens kennt und man eine Obergrenze vorgibt.
Function ShapeInternalName(ExternalName As String) As String
Dim IntName As String, ExtName As String
ShapeInternalName = "Keine Textbox mit diesem Namen."
On Error Resume Next
For x = 1 To 100
IntName = "Textbox " & x
ExtName = ActiveSheet.Shapes(IntName).Name
If Err.Number = 0 Then
If ExtName = ExternalName Then ShapeInternalName = IntName
Else
Err.Clear
End If
Next
End Function

Anzeige
Nein, nicht dass ich wüsste, ...
26.06.2012 17:54:22
Luc:-?
…Günther,
denn die wdn einfach immer nur endlos flfd durchnummeriert. Vermutlich wdn sie xl-intern verwaltet - ohne Zugriffsmöglichkeit (deshalb wohl auch nicht änderbar, weil HptOrdnungsBegriff der internen Objekt-DB). Der neue Name ist dann nur eine Eintragung zu diesem HOB, über die aber auch auf alle anderen zugegriffen wdn kann, wohl nur nicht auf den HOB (kenne keinen VBA-Bezeichner dafür → wird wohl auch nicht existieren, weil Manipulation möglicherweise von MS für unnötig gehalten).
Also wird's wohl nur mit der umständl Methode gehen.
Gruß Luc :-?
Anzeige
AW: Nein, nicht dass ich wüsste, ...
26.06.2012 23:20:09
Günther
Danke!
Grüße Günther

8 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige