Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1948to1952
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

Shapes und Textumbruch abhängig von Spaltenbreite

Shapes und Textumbruch abhängig von Spaltenbreite
16.10.2023 12:18:26
Joschi Witchcraft
Hallo Forum,

Auf einem Tabellenblatt habe ich die Spalte "A" für ein paar Schaltflächen vorgesehen. Damit jede Schaltfläche etwas höher wird, verbinde (merge) ich kurzfristig zwei Zeilen in Spalte "A" miteinander. Dadurch belegt die Shape dann zwei Zeilen. Nachdem die Shape eingerichtet ist, hebe ich die Verbindung wieder auf; die Größe des Shapes ändert sich dadurch nicht.

Set MyRange = Cells(AtRow, AtCol).MergeArea
Set MyShape = ActiveSheet.Shapes.AddShape(Type:=msoShapeActionButtonCustom, _
Left:=MyRange.Left, _
Top:=MyRange.Top, _
Width:=MyRange.Width, _
Height:=MyRange.Height)

Damit die Spalte aber nicht zu breit werden, und meine Beschriftung auf der Schaltfläche nicht unverständlich kurz sein muss, suche ich nun nach der Lösung, wie ich diese Beschriftung auf mehrere Zeilen verteilen kann, abhängig von der aktuellen Breite der Spalte.

Wenn ich jetzt die Spalte schmäler mache, passt sich die Shape der Spaltenbreite an, aber von meinem Text ist ggf. nur noch ein Teil sichtbar.

Wenn ich die Shape bereits in einer schmäleren Spalte erstelle, fehlen mit teilweise Worte. Die werden aber sichtbar, sobald ich die Spaltenbreite nachträglich erhöhe.


Früher hatte ich Schaltflächen mit "ActiveSheet.Buttons.Add" hinzugefügt. Da bestand das Problem mit dem Textumbruch nicht; der Text hat sich dynamisch angepasst. Manchmal ging aber auch eine Folgezeile dadurch "verloren". Aber Shapes bieten mehr Möglichkeiten. Deshalb nutze ich nur noch Shapes.

Wer kann mir weiterhelfen? In Google habe ich dazu nichts passendes gefunden. Möglicherweise hatte ich den entscheidenden Suchbegriff nicht verwendet.

Gruß Joschi

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Shapes und Textumbruch abhängig von Spaltenbreite
16.10.2023 16:15:36
Yal
Hallo Joschi,

es ist ein sehr spezifische Bedarf, der auch noch ganz tief in der Excel/Office Funktionalität verankert wäre. Wenn Excel es nicht out-of-the-box liefert, kann man davon ausgehen, dass es entweder ein Grund dafür gab, oder zu wenige Nachfragen. Wenn auch noch dazu die Funktionalität in einem ähnlichen Steuerungselement vorhanden ist, wäre es sinnfrei diese nachzubilden.

Welche Möglichkeit bietet einen Shape denn, die eine Schaltfläche nicht bietet?

VG
Yal

AW: Shapes und Textumbruch abhängig von Spaltenbreite
16.10.2023 17:03:01
daniel
HI
das mit dem Mergen ist unötiger Aufwand.
Wenn du willst, dass dein Button zwei Zellen hoch ist, dann ermittle doch einfach die Höhe der beiden untereinanderliegenden Zellen, dazu muss man sie nicht verbinden.
lass also das verbinden der Zellen weg,
es reicht dann:
Set MyRange = Cells(AtRow, AtCol)
und bei Ermittlung der Höhe dann einfach die darunterliegende Zelle mit einbeziehen:
.Height:=MyRange.Resize(2, 1).Height

wenn sich das Shape nicht nach deinen Wünschen verhält, dann musst du eben noch die weiteren Einstellungen wie:
Text in Form umbrechen oder ähnliches in der Programmierung explizit mit angeben, weil die automatisch verwendeten Werte nicht deinen Wünschen entsprechen.
Wie man das programmiert, sollte dir der Recorder zeigen.
Wenn nicht, gäbe es noch die Möglichkeit, dass du eine Form als Vorlage von Hand erstellst, welche du mit den gewünschten Eigenschaften ausstattest.
dann kopierst du diese Form und fügst sie ein, dann musst du nur noch die Eigenschaften im Code einstellen, mit denen sich die einzelnen Shapes unterscheiden (Top, Left usw), aber die, die für alle Shapes gleich bleiben sollen, stellst du im Vorlageshape von Hand ein und brauchst dann diese im Code nicht berücksichtigen.

Fügst du jedoch das Shape neu hinzu, dann musst du im Prinzip alles programmieren, nur dort, wo deine Wünsche mit den Default-Einstellungen von MS übereinstimmen, kannst du die Einstellung per Code weglassen.

Aber wie gesagt, die Grafikprogammierung ist nicht ganz einfach und je nach Excelversion ist auch der Recorder nicht immer auf neustem Stand, dann werden bestimmte Aktionen einfach nicht aufgezeichnet und dann muss man suchen, wie das programmiert wird (in der Vergangenheit waren die Grafikobjekte besonders betroffen von), von daher arbeite ich ganz gerne mit Vorlangen, die ich einfach kopiere und anpasse.

Gruß Daniel
Anzeige
AW: Shapes und Textumbruch abhängig von Spaltenbreite
16.10.2023 17:50:18
Joschi Witchcraft
Hallo Daniel.

Danke für Deine ausführliche Antwort.

Das "Mergen" hatte ich inzwischen bereits entfernt. Das gleiche hatte ich dadurch erreicht, dass ich den Bereich für die Shape zuvor mit "With Range(xxxxx) abgegrenzt hatte. Und das hat funktioniert.

Mit meinem Basiswissen wird es wohl unmöglich sein, das mit dem Textumbruch in Verbindung mit Shape zu realisieren. Ich hatte darauf gehofft, dass es einen Parameter gibt, den ich bisher nicht entdeckt hatte.

Ich lassen den Thread noch offen. Vielleicht hat jemand noch einen Idee.


Gruß Joschi

Anzeige
AW: Shapes und Textumbruch abhängig von Spaltenbreite
16.10.2023 17:41:16
Joschi Witchcraft
Hallo Yal,

sorry. Aber die Frage, was Shape mehr bietet, kann ich Dir nicht beantworten.

Gruß Joschi
AW: Shapes und Textumbruch abhängig von Spaltenbreite
22.10.2023 09:22:16
Oberschlumpf
Hi Joschi,

aber du schreibst doch...
"...Früher hatte ich Schaltflächen mit "ActiveSheet.Buttons.Add" hinzugefügt. Da bestand das Problem mit dem Textumbruch nicht; der Text hat sich dynamisch angepasst. Manchmal ging aber auch eine Folgezeile dadurch "verloren". Aber Shapes bieten mehr Möglichkeiten. Deshalb nutze ich nur noch Shapes..."

DAS schreibst du doch nich nur, weil du Lust dazu hattest - dafür muss es doch einen Grund gegeben haben...und welcher Grund ist das?
Wenn du DAS tatsächlich nicht (mehr) weißt, dann würd ich empfehlen: Nutz wieder "ActiveSheet.Buttons.Add" - oder genau was spricht dagegen?

Ciao
Thorsten
Anzeige
AW: Shapes und Textumbruch abhängig von Spaltenbreite
25.10.2023 17:06:08
Joschi Witchcraft
Hallo Thorsten.

Was für mich der Anlass war, nur noch Shapes zu nutzen, kann ich Dir nicht beantworten.

Ich habe inzwischen ein paar Experimente gemacht, und die Schritte durch den Recorder aufzeichnen lassen. Aber der hat nicht alles aufgezeichnet. Wenn ich das aufgezeichnete Makro ausführe, dann kommt nicht der erwartete Erfolg.

Das sind die Daten vom Recorder:

ActiveSheet.Shapes.Range(Array("EmpfängerE")).Select
Selection.ShapeRange.TextFrame2.WordWrap = msoTrue
Application.CommandBars("Format Object").Visible = False

Wenn ich jetzt den Shape mit der rechten Maustaste anklicke, danach "Texteffekte formatieren" auswähle, im folgenden Dialog das rechte Icon ("Textfeld") auswähle und bei "Textüberlauf bei Form zulassen" eine Haken setze (bei "Text in Form umbrechen" ist der Haken bereits gesetzt, dann erreiche ich den gewünschten Erfolg.

Nur wenn beide Häkchen gesetzt sind, tritt der gewünschte Effekt ein.

Die Frage zum Erfolg: wie kann ich diese Option per VBA setzen, nachdem der Recorder dazu nichts generiert hat?

Gruß Joschi
Anzeige
AW: Shapes und Textumbruch abhängig von Spaltenbreite
25.10.2023 17:43:00
Oberschlumpf
Hi,

hier is es zu spät - erstell n ganz neuen Beitrag...am besten trag den Archivlink von hier mit ein...für Antwortende, die die Vorgeschichte nicht kennen.

Ciao
AW: Shapes und Textumbruch abhängig von Spaltenbreite
26.10.2023 06:36:31
Joschi Witchcraft
Hallo Thorsten, hallo Forum.

Das Problem ist gelöst:

With ActiveSheet.Shapes("EmpfängerE")
Debug.Print .TextFrame2.WordWrap
Debug.Print .TextFrame.VerticalOverflow
.TextFrame.VerticalOverflow = xlOartVerticalOverflowOverflow
.TextFrame2.WordWrap = msoTrue
Debug.Print .TextFrame2.WordWrap
Debug.Print .TextFrame.VerticalOverflow
End With

WordWrap wurde von 0 auf -1 gesetzt, und VerticalOverflow von 1 auf 0.

Gruß Joschi.
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige