Hallo zusammen,
ich möchte gerne ein Strukturdiagramm mit Hilfe der Autoformen (Shades) von MS-Excel erstellen. In den Autoformen ist ein Text gespeichert, der mindestens 2 Zeilen aber maximal 3 Zeilen lang ist.
Dieser Text soll mittels Makro ausgelesen und in ein zweites Blatt geschrieben werden. Das Makro wird dann aktiviert, wenn auf die Autoform geklickt wird (mittels Makrozuweisung in der Autoform).
Dieses Makro habe ich bereits mittels Aufzeichnung erstellt. Für eine einzige Autoform klappt das auch in erträglichem Rahmen. Anbei der (gekürzte und korrigierte) Code:
ActiveSheet.Shapes("AutoShape 1").Select
Selection.Characters.Text = "525100" & Chr(10) & "Teilebezeichnung"
With Selection.Characters(Start:=1, Length:=6).Font
End With
Sheets("Liste").Select
Range("A2").Select
ActiveSheet.Paste
Sheets("Grafik").Select
ActiveSheet.Shapes("AutoShape 1").Select
Selection.Characters.Text = "525100" & Chr(10) & "Teilebezeichnung"
With Selection.Characters(Start:=7, Length:=16).Font
End With
Sheets("Liste").Select
Range("B2").Select
ActiveSheet.Paste
Datei-Upload: https://www.herber.de/bbs/user/41016.xls
Allerdings möchte ich das Makro flexibler gestalten:
- Die Autoform [ActiveSheet.Shapes("AutoShape 1").Select] soll nicht festgelegt ("AutoShape 1") sein, sondern dadurch definiert werden, welche Autoform zur Aktivierung des Makros angeklickt wurde.
- Weiterhin sieht es so aus, als ob gar nicht der Text aus der Autoform ausgelesen würde, sondern die Autoform und der Text markiert aber nicht kopiert würden. Aus diesem Grund wird immer nur das, was im aktuellen Zwischenspeicher liegt in die Zellen geschrieben. Ändere ich den Code in:
ActiveSheet.Shapes("AutoShape 1").Select
Selection.Characters.Text = "525100" & Chr(10) & "Teilebezeichnung"
With Selection.Characters(Start:=1, Length:=6).Font
End With
Selection.Copy
wird aber die gesamte Autoform kopiert und eingefügt.
Wie schaffe ich es den Text in der Autoform auszulesen, die ich angeklickt habe? Zur Not können es auch nur die ersten 6 Zeichen in der Autoform sein.
Vielen Dank im Voraus.
Gruß,
Daniel