Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Mit VBA Formen (shapes) kopieren (NICHT ALS BLD)

Forumthread: Mit VBA Formen (shapes) kopieren (NICHT ALS BLD)

Mit VBA Formen (shapes) kopieren (NICHT ALS BLD)
21.11.2014 08:17:04
jeko
Guten Morgen liebes Forum,
ich finde einfach keine Lösung und hoffe Ihr könnt mir helfen. Ich habe eine kleine Userform in der ich Formen auswählen und ein Text hinzufügen kann, nach Bestätigung der Eingabe wird das Grafikobjekt erstellt bzw. kopiert (die ich im gleichen Tabellenblatt hinterlegt habe).
Es funktioniert auch alles wunderbar, nur leider ist das "neu" erstellte Grafikobjekt eine _ Bilddatei und kein Grafikobjekt (bzw. Shape) mehr und ich kann den Text im nachhinein nicht mehr manuell ändern. Das allerdings wäre sehr wichtig. Ich wäre dankbar wenn ihr mir helfen könnten. Hier ein Ausschnitt meines codes....

If ComboBox1 = "Function" Then
ActiveSheet.Shapes("Abgerundetes Rechteck 5").TextFrame.Characters.Text = TextBox1.Value
ActiveSheet.Shapes("Abgerundetes Rechteck 5").Copy
Range("J16").Select
Selection.PasteSpecial Paste:=xlValues
Application.CutCopyMode = False
ActiveSheet.Shapes("Abgerundetes Rechteck 5").TextFrame.Characters.Text = ""
Unload Me
Else

Grüße
jeko

Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Mit VBA Formen (shapes) kopieren (NICHT ALS BLD)
21.11.2014 10:13:32
fcs
Hallo Jeko,
verwende zum Einfügen statt
  Selection.PasteSpecial Paste:=xlValues
'folgende Zeile
ActiveSheet.Paste

Gruß
Franz

AW: Mit VBA Formen (shapes) kopieren (NICHT ALS BLD)
21.11.2014 10:15:54
Rudi
Hallo,
If ComboBox1 = "Function" Then
With ActiveSheet
With .Shapes("Abgerundetes Rechteck 5")
.TextFrame.Characters.Text = TextBox1.Value
.Copy
End With
.Paste Range("J16")
.Shapes("Abgerundetes Rechteck 5").TextFrame.Characters.Text = ""
End With
Unload Me
Else

Gruß
Rudi

Anzeige
AW: Mit VBA Formen (shapes) kopieren (NICHT ALS BLD)
21.11.2014 10:41:55
jeko
Vielen Dank, ihr habt mir sehr geholfen.
Ich habe es jetzt einfach durch ActiveSheet.Paste ersetzt.
;
Anzeige
Anzeige

Infobox / Tutorial

Formen (Shapes) mit VBA kopieren und bearbeiten


Schritt-für-Schritt-Anleitung

Um mit VBA Formen (Shapes) in Excel zu kopieren, ohne dass sie in eine Bilddatei umgewandelt werden, folge diesen Schritten. Diese Anleitung setzt voraus, dass Du mit Excel und VBA vertraut bist.

  1. Erstelle eine Userform mit einer ComboBox und einer TextBox, um die Eingaben zu tätigen.
  2. Füge den folgenden VBA-Code in das Modul Deiner Userform ein:
If ComboBox1 = "Function" Then
    With ActiveSheet
        With .Shapes("Abgerundetes Rechteck 5")
            .TextFrame.Characters.Text = TextBox1.Value
            .Copy
        End With
        .Paste Range("J16")
        .Shapes("Abgerundetes Rechteck 5").TextFrame.Characters.Text = ""
    End With
    Unload Me
Else
  1. Ändere die Zeile, die für das Einfügen verantwortlich ist. Stelle sicher, dass Du .Paste anstelle von Selection.PasteSpecial verwendest, um die Form als Shape und nicht als Bild einzufügen.

Häufige Fehler und Lösungen

  • Form wird als Bild eingefügt: Wenn die Form nach dem Einfügen als Bild erscheint, überprüfe, ob Du die richtige Paste-Methode verwendest. Nutze .Paste anstelle von Selection.PasteSpecial Paste:=xlValues.

  • Text kann nicht bearbeitet werden: Stelle sicher, dass Du die TextFrame-Eigenschaft korrekt verwendest. Der Text muss vor dem Kopieren gesetzt werden, um die Bearbeitung zu ermöglichen.


Alternative Methoden

Eine alternative Methode, um Formen in Excel zu kopieren, ist die Verwendung von Makros. Hier ist ein einfaches Beispiel:

Sub CopyShape()
    Dim shp As Shape
    Set shp = ActiveSheet.Shapes("Abgerundetes Rechteck 5")
    shp.Copy
    ActiveSheet.Paste Destination:=ActiveSheet.Range("J16")
End Sub

Diese Methode ermöglicht es Dir, die Form auf einfache Weise zu kopieren und an einer gewünschten Stelle einzufügen.


Praktische Beispiele

Ein praktisches Beispiel könnte sein, verschiedene Formen zu erstellen, die unterschiedliche Texte anzeigen. Du könntest eine Userform erstellen, in der der Benutzer verschiedene Optionen auswählen kann, um dynamisch die Texte in die Formen einzufügen.

Ein Beispielcode könnte so aussehen:

If ComboBox1 = "Kreis" Then
    ActiveSheet.Shapes("Kreis").TextFrame.Characters.Text = TextBox1.Value
ElseIf ComboBox1 = "Rechteck" Then
    ActiveSheet.Shapes("Rechteck").TextFrame.Characters.Text = TextBox1.Value
End If

Tipps für Profis

  • Verwende With...End With: Dies reduziert die Anzahl der Codezeilen und verbessert die Lesbarkeit.
  • Fehlerbehandlung einbauen: Nutze On Error Resume Next, um potenzielle Fehler zu vermeiden, wenn eine Form nicht gefunden wird.
  • Teste den Code: Verwende die F8-Taste im VBA-Editor, um den Code Zeile für Zeile zu testen.

FAQ: Häufige Fragen

1. Frage
Wie kann ich sicherstellen, dass die Kopie der Form die gleichen Eigenschaften hat?
Antwort: Stelle sicher, dass Du die Copy-Methode verwendest, bevor Du die Form einfügst. Dadurch bleiben die Eigenschaften der ursprünglichen Form erhalten.

2. Frage
Kann ich mehrere Formen gleichzeitig kopieren?
Antwort: Ja, Du kannst mehrere Formen in einer Schleife durchlaufen und sie einzeln kopieren, indem Du die Copy-Methode für jede Form aufrufst.

3. Frage
Funktioniert das auch in Excel Online?
Antwort: Leider sind VBA-Makros in Excel Online nicht verfügbar. Du musst die Desktop-Version von Excel verwenden, um diesen Code auszuführen.

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