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

Forumthread: Shape ohne Select ansprechen?

Shape ohne Select ansprechen?
11.07.2005 17:27:00
Oliver
Hallo Leute,
ich komme nicht weiter. ich habe mir folgendes Makro aufgezeichnet:


Sub Testmakro()
    ActiveSheet.Shapes("Text Box 1").Select
    Selection.Characters.Text = "Testeintrag"
End Sub


Mit diesem Makro möchte ich ein Textfeld aus der Symbolleiste "Zeichnen" mit einem Text füllen. Allerdings möchte ich das machen ohne daß das Textfeld (Shape) markiert wird. Aber wie stelle ich das an? Wenn ich den Code so versuche umzustellen, daß Select und Selection entfällt, kommt es zu einer Fehlermeldung. Hat jemand da einen Tip für mich? Wäre super.
Danke Euch schon mal,
Oliver
Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
TextFrame-Objekt
11.07.2005 17:43:43
ransi
hallo oliver
schau dir mal die characters eigenschaft in der hilfe an.
da ist ein weiter führender link auf textframe.
"Hinweise
Das Characters-Objekt ist keine Auflistung.
Beim TextFrame-Objekt ist Characters eine Methode."
versuchs mal so:

Sub Testmakro()
ActiveSheet.Shapes("Text Box 1").TextFrame.Characters.Text = "Testeintrag"
End Sub

ransi
Anzeige
AW: TextFrame-Objekt
11.07.2005 17:48:57
Oliver
Hi ransi,
danke Dir für Deine Erklärung und den Lösungsversuch. Das war genau das, was mir fehlte. Jetzt funktioniert es prima. Danke Dir noch mal dafür und noch einen schönen Abend,
Oliver
;
Anzeige
Anzeige

Infobox / Tutorial

Shape ohne Select ansprechen in Excel VBA


Schritt-für-Schritt-Anleitung

  1. Öffne Excel und gehe zu dem Arbeitsblatt, das das Shape enthält.

  2. Drücke ALT + F11, um den VBA-Editor zu öffnen.

  3. Füge ein neues Modul hinzu:

    • Rechtsklick auf "VBAProject (DeinDateiname)".
    • Wähle Einfügen > Modul.
  4. Füge den folgenden Code ein:

    Sub Testmakro()
       ActiveSheet.Shapes("Text Box 1").TextFrame.Characters.Text = "Testeintrag"
    End Sub
  5. Schließe den VBA-Editor und kehre zurück zu Excel.

  6. Führe das Makro aus:

    • Drücke ALT + F8, wähle Testmakro und klicke auf Ausführen.

Jetzt wird der Text "Testeintrag" in das Shape eingefügt, ohne dass dieses ausgewählt werden muss.


Häufige Fehler und Lösungen

  • Fehler: "Shape nicht gefunden"

    • Lösung: Stelle sicher, dass der Name des Shapes korrekt ist. Überprüfe den Namen in der Excel-Oberfläche.
  • Fehler: "Methoden oder Eigenschaften nicht gefunden"

    • Lösung: Achte darauf, dass du die richtige Excel-Version verwendest, die das TextFrame-Objekt unterstützt.

Alternative Methoden

  • Du kannst auch ein anderes Shape oder Textfeld ansprechen, indem du den Namen im Code änderst. Zum Beispiel:

    Sub AnderesShape()
       ActiveSheet.Shapes("DeinShapeName").TextFrame.Characters.Text = "Neuer Text"
    End Sub
  • Eine weitere Möglichkeit ist die Verwendung von Variablen, um die Shapes dynamisch anzusprechen. Beispiel:

    Sub DynamischesAnsprechen()
       Dim shp As Shape
       Set shp = ActiveSheet.Shapes("Text Box 1")
       shp.TextFrame.Characters.Text = "Dynamischer Text"
    End Sub

Praktische Beispiele

  1. Einfügen von Text in mehrere Shapes:

    Sub MehrereShapesAnsprechen()
       Dim i As Integer
       For i = 1 To 3
           ActiveSheet.Shapes("Text Box " & i).TextFrame.Characters.Text = "Eintrag " & i
       Next i
    End Sub
  2. Textformatierung:

    Sub TextFormatierung()
       With ActiveSheet.Shapes("Text Box 1").TextFrame.Characters
           .Text = "Formatierter Text"
           .Font.Bold = True
           .Font.Size = 14
       End With
    End Sub

Tipps für Profis

  • Nutze Fehlerbehandlungsroutinen in deinem VBA-Code, um mögliche Fehler zu identifizieren und zu beheben.

    On Error Resume Next
    ActiveSheet.Shapes("Text Box 1").TextFrame.Characters.Text = "Testeintrag"
    If Err.Number <> 0 Then
       MsgBox "Fehler: " & Err.Description
    End If
    On Error GoTo 0
  • Dokumentiere deinen Code gut, um die Wartung und Wiederverwendbarkeit zu verbessern.


FAQ: Häufige Fragen

1. Frage: Was ist der Unterschied zwischen Select und direktem Ansprechen eines Shapes?
Antwort: Die Verwendung von Select ist ineffizient, da es den Fokus auf das Shape legt. Direkte Ansprache mit ActiveSheet.Shapes("Name") ist schneller und vermeidet visuelle Ablenkungen.

2. Frage: Funktioniert dieser Code in Excel 2010?
Antwort: Ja, der Code funktioniert in Excel 2010 und neueren Versionen, solange die Shapes korrekt benannt sind.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige