Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema TextBox
BildScreenshot zu TextBox TextBox-Seite mit Beispielarbeitsmappe aufrufen

Textfelder mit gleichem Namen | Herbers Excel-Forum


Betrifft: Textfelder mit gleichem Namen von: Reinhard
Geschrieben am: 12.01.2010 15:40:50

Hallo Wissende,

eine Anfragerin in einem anderen Forum hat folgendes Problem.
Sie hat über Symbolleiste "zeichnen" ein Textfeld erzeugt.
Dann bei gedrückter "Strg" verschoben, somit wurde es kopiert.
Sie behauptet, wenn man die Textfelder markiert, würde oben links im Namensfeld überall "Text 2" angezeigt.

Ich habe ihr das nicht geglaubt und sie gebeten, dies mal laufen zu lassen:

Sub nn()
Dim S
For Each S In ActiveSheet.Shapes
   MsgBox S.Name
Next S
End Sub

Nun sagt sie, alle Textfelder hießen "Text 2"

Ich habe kein 2003, nur 2000, wenn ich mache was sie gemacht hat heißen die Dinger wie gewohnt Textfeld 1, Textfeld 2, usw.
(Damit meine ich die Anzeige im namensfeld)
Im Code heißen sie Text Box 1, Text Box 2, usw.

Nun blicke ich nicht mehr durch. Kann das an der Version liegen?

Wäre jmd. hier mit XL2003 so nett und würde mal rumtesten?

Und, habe ich Recht mit meiner Annahme, Excel duldet keine zwei Objekte gleichen Namens auf einem Blatt?

Eine Beispielmappe habe ich erbeten, mal schauen wann sie kommt.

Danke ^ Gruß
Reinhard

  

Betrifft: Meines Wissens bleiben die angezeigten... von: Luc:-?
Geschrieben am: 12.01.2010 15:53:27

...Namen von Autoform-Objekten auch schon unter xl9 gleich, nur die internen Namen (Zähler!) ändern sich, Reinhard.
Wenn du anschließend ein gleichartiges Objekt neu zeichnest, müsste die Nr im angezeigten Namen entsprechend höher sein, also scheinbar eine Zähllücke entstehen. Teste das mal!
Bei einer Kopie wird anscheinend alles kopiert, auch die angezeigte Caption.
Gruß Luc :-?


  

Betrifft: AW: Meines Wissens bleiben die angezeigten... von: Reinhard
Geschrieben am: 12.01.2010 16:57:28

Hallo Luc,

:::Meines Wissens bleiben die angezeigten Namen von Autoform-Objekten auch schon unter xl9 gleich:::

bei mir in XL2000/Xl9 nicht. Egal wie ich da so ein Zeichnen-Textfeld kopiere, ob mit Lopieren...Einfügen oder Strg halten und verschieben, der Name verändert sich durch den hochzählenden Index.

:::nur die internen Namen (Zähler!) ändern sich, Reinhard.:::

Was sind nun in dem fall interne namen? Sie sagt wenn sie meinen Code laufen lässt erhält sie als Namen mehrfach den gleichen. Kann doch gar nicht sein *denk*

:::Wenn du anschließend ein gleichartiges Objekt neu zeichnest, müsste die Nr im angezeigten Namen entsprechend höher sein, also scheinbar eine Zähllücke entstehen. Teste das mal!:::

Die Zähllücke verstehe ich nicht, pro neuem Objekt wird eins hochgezählt bei mir.

:::Bei einer Kopie wird anscheinend alles kopiert, auch die angezeigte Caption.:::

Bei mir nicht. Ich weiß auch nicht was das Namensfeld so anzeigt, eine Caption hat so ein Textfeld aus Zeichnen nicht.

Ich habe so wie sie es gemacht hat mehrere Textfelder erzeugt durch Kopieren des ersten Textfeldes.
Sie haben bei mir oben in dem Namensfeld den Namen "Textfeld X".
Mariere ich nun den rand eines solchen Textfeldes, so kann ich im Namensfeld den Namen ändern.
Aber nicht auf den Namen eines schon bestehenden Textfeldes.

Gruß
Reinhard


  

Betrifft: die zählen immer hoch (xl2000) auch beim Kopieren von: Matthias L
Geschrieben am: 12.01.2010 17:14:05

Hallo

Hab das gerade getestet in XL2000
Auch beim Kopieren per gehaltener STRG-Taste durch Verschieben des Objektes wird der Name im
NamensFeld immer um einen Zähler erhöht.

Sollte ein Texfeld z.B. Textfeld 2 zwischenzeitlich gelöscht worden sein, wird es nicht automatisch neu erstellt, sondern das neue Objekt wird mit dem nächsten Zähler gefüllt.
Egal ob Kopieren oder Objekt neu zeichnen

Ich werde es, wenn sich niemand findet der Office2003 hat morgen in der FA. testen.
Unter XL2000 ist es so wie beschrieben.

Gruß Matthias


  

Betrifft: Umbenannte Textfelder bleiben gleich von: NoNet
Geschrieben am: 12.01.2010 17:41:09

Hallo Reinhard,

ich habe das eben mit Excel 2003 getestet :
Erstellt man ein Textfeld ("Textfeld 1") und kopiert dieses per Strg-Taste und Maus, so heißt die Kopie wie von dir beschrieben "Textfeld 2". Der Name kann auch nicht auf den eines bereits bestehenden Textfeldes geändert werden !

Ändert man den Namen eines Textfeldes jedoch VOR dem Kopieren (z.B: "Textfeld 2" nach "Text2") und kopiert dieses per Strg-Taste und Maus, so heißt dieses tatsächlich auch "Text2" - sowohl als Objekt in der Mappe wie auch per VBA : MsgBox Activesheet.Textboxes(3).Name

Es kann per VBA (wie von Luc bereits erwähnt) nur per Index oder über den ursprünglichen Namen referenziert werden, nicht per Name :

Activesheet.Textboxes("Text2").Select 'Markiert das 2.Textfeld, das als Kopie von "Textfeld 1" erstellt wurde
Activesheet.Textboxes(2).Select 'Markiert das 2.Textfeld, das als Kopie von "Textfeld 1" erstellt wurde
Activesheet.Textboxes(3).Select 'Markiert das 3.Textfeld, das als Kopie von "Text2" erstellt wurde
Activesheet.Textboxes("Textfeld 3").Select 'Markiert das 3.Textfeld, das als Kopie von "Text2" erstellt wurde
MsgBox ActiveSheet.Textboxes("Text Box 3").Index' Ergibt : 3 (da 3. Textfeld des Blattes)

Das gleiche gilt für die Referenzierung per Shape-Object :
MsgBox ActiveSheet.Shapes(1).name' Ergibt : "Text Box 1"
MsgBox ActiveSheet.Shapes("Textfeld 1").name' Ergibt : "Text Box 1"
MsgBox ActiveSheet.Shapes("Text Box 1").name' Ergibt : "Text Box 1"

MsgBox ActiveSheet.Shapes(2).name' Ergibt : "Text2"
MsgBox ActiveSheet.Shapes("Textfeld 2").name' Ergibt : "Text2"
MsgBox ActiveSheet.Shapes("Text Box 2").name' Ergibt : "Text Box 2"

MsgBox ActiveSheet.Shapes(3).name' Ergibt : "Text2"
MsgBox ActiveSheet.Shapes("Textfeld 3").name' Ergibt : "Text2"
MsgBox ActiveSheet.Shapes("Text Box 3").name' Ergibt : "Text2"

Leider funktioniert meine VBA-Hilfe auf dem PC nicht, so dass ich in der OH nicht nachschlagen kann, welche Properties das Textbox-Objekt besitzt - evtl. kann man den "ursprünglichen" (bzw. internen) Namen doch per VBA ermitteln ?

Gruß, NoNet


  

Betrifft: Ich glaube das kann man, NoNet,... von: Luc:-?
Geschrieben am: 12.01.2010 19:36:20

...habe mal so etwas gelesen, kann ich aber jetzt nicht nachprüfen.
Und richtig, meine Bemerkung setzte voraus, dass zuvor der angezeigte Name geändert wurde. Kann mich erinnern, das immer gemacht zu haben, bevor ich die Objekte kopiert habe. Weil sich dann der angezeigte Name nicht geändert hatte, habe ich ein Makro drüberlaufen lassen. Dann ließ sich das Objekt auch mit diesem Namen ansprechen. Die internen Namen können wohl nicht beeinflusst wdn. Da wird immer weiter gezählt, egal, ob zwischendurch welche gelöscht wurden. Das hatte mir nicht gefallen, weil mir das für VBA zu zufällig war — deshalb die neuen Namen. Das mag dann auch beim geschilderten Tatbestand der Fall sein...
Es gibt allerdings auch Objekte, die man per VBA nur mit ihren internen Namen ansprechen kann — steht irgendwo in der Hilfe...
Gruß Luc :-?


  

Betrifft: AW: Ich glaube das kann man, NoNet,... von: Reinhard
Geschrieben am: 14.01.2010 09:39:04

Hallo NoNet,Luc,

mit Oh meinst du wohl F2?
Tja, da kenne ich mich nicht aus mit dem Objektkatalog, finde da eher immer nix :-(

Ich benutze Set, gehe dann mit F8 nach die Set-Zeile und suche im Lokalfenster.
Und bei "Text2" die als "Textfeld 2" angesprochen werden kann, fand ich im Lokalfenster nirends "Textfeld2".

Sub tt()
Dim S
With ActiveSheet
   MsgBox .Shapes("Text2").Name
   MsgBox .Shapes("Textfeld 1").Name
   Set S = .Shapes("Textfeld 2")
   MsgBox .Shapes("Textfeld 2").Name
   MsgBox .Shapes("Text2").AlternativeText
   MsgBox .Shapes("Textfeld 1").AlternativeText
   MsgBox .Shapes("Textfeld 2").AlternativeText
   MsgBox .TextBoxes("Text2").Name
   MsgBox .TextBoxes("Textfeld 1").Name
   MsgBox .TextBoxes("Textfeld 2").Name
   MsgBox .TextBoxes("Text2").Text
   MsgBox .TextBoxes("Textfeld 1").Text
   MsgBox .TextBoxes("Textfeld 2").Text
End With
End Sub

Gruß
Reinhard


  

Betrifft: Intern heißt das auch nicht Textfeld, sondern... von: Luc:-?
Geschrieben am: 14.01.2010 16:36:49

...eher TextBox oder TextField, Reinhard,
auf jeden Fall in Englisch...
Gruß Luc :-?
PS: Und im Objektkatalog kann man auch eine bestimmte Bibliothek (Stdd alle) einstellen, die durchsucht wdn soll. Außerdem kann man auch suchen, da findet man auch (Teile von) Werte(n), man muss nur wissen, was man suchen will (VBA-Englisch)...


Beiträge aus den Excel-Beispielen zum Thema "Textfelder mit gleichem Namen"