Shapes.TextFrame.Characters.Text bearbeiten ohne ...

.. das wohl mächtigste Werkzeug in Bill Gates' Büro-Sippe. Ob reine Formeln, PowerQuery oder VBA. Hier bleiben kaum Wünsche unerfüllt.
Benutzeravatar
d'r Bastler
Beiträge: 832
Registriert: 29. Aug 2022, 13:20
Hat sich bedankt: 224 Mal
Danksagung erhalten: 118 Mal

Shapes.TextFrame.Characters.Text bearbeiten ohne ...

#1

Beitrag von d'r Bastler »

Moin allerseits,

meine Landschaft aus Shapes ist zwar mit definierten Namen versehen, aber ohne Text. Der soll vom Nutzer eingetragen werden können. Ein Klick aufs Shape und er darf los schreiben. Die Eingabe kann er per Klick auf ein OK-Shape bestätigen.

Leider erscheint bei dem Klick immer der Kontrollrahmen (ich nenne die Dinger Ohren :) ), mit dem Größe und Drehung des Shapes verändert werden soll. Kann man den/die irgendwie unterdrücken?

Im Netz habe ich verschiedene Ansätze (markier' doch was anderes, Application.CopyCut = False, usw.) gefunden, von denen leider keiner funktioniert. Hat jemand eine zündende Idee?

Ganz lieben Dank vorab!

lg
d'r Bastler von den VBAsteleien.de
Win 10 + Office 2019 & Win11 + Office 2021 + Visio 2019 pro & macOS.X15 + Office2019pro & Android12 & XL365
Benutzeravatar
d'r Bastler
Beiträge: 832
Registriert: 29. Aug 2022, 13:20
Hat sich bedankt: 224 Mal
Danksagung erhalten: 118 Mal

Re: Shapes.TextFrame.Characters.Text bearbeiten ohne ...

#2

Beitrag von d'r Bastler »

Moin nochmal,

inzwischen habe ich einen Workaround gebastelt, den ich aber ungefähr so
elegant wie eine Giraffe auf Rollschuhen
finde.

Und zwar klebe ich über Shape.OnAction meinem Shape direkt an seiner Position eine Mini-UserForm ohne Titelzeile vor die Nase. In eine TextBox kann nun eingegeben werden und per CommandButton an den Shapes(sCaller).TextRange.Characters.text übergeben. sCaller ist der Name des aufrufenden Shapes.

Über eine elegantere Idee würde ich mich sehr freuen. Ich will die Giraffe nicht so furchtbar quälen :lol:

lg
d'r Bastler von den VBAsteleien.de
Win 10 + Office 2019 & Win11 + Office 2021 + Visio 2019 pro & macOS.X15 + Office2019pro & Android12 & XL365
Benutzeravatar
d'r Bastler
Beiträge: 832
Registriert: 29. Aug 2022, 13:20
Hat sich bedankt: 224 Mal
Danksagung erhalten: 118 Mal

Re: Shapes.TextFrame.Characters.Text bearbeiten ohne ...

#3

Beitrag von d'r Bastler »

Zu diesem Thema gibt es hier einen CrossPost Wo's die erste Antwort gibt, geht's weiter. Danke!
Mein Workaround gilt nicht als Antwort :P
d'r Bastler von den VBAsteleien.de
Win 10 + Office 2019 & Win11 + Office 2021 + Visio 2019 pro & macOS.X15 + Office2019pro & Android12 & XL365
Benutzeravatar
theos
Beiträge: 51
Registriert: 15. Sep 2022, 21:48
Hat sich bedankt: 4 Mal
Danksagung erhalten: 35 Mal
Kontaktdaten:

Re: Shapes.TextFrame.Characters.Text bearbeiten ohne ...

#4

Beitrag von theos »

Hallo Bastler, du kannst doch einfach eine Zelle befüllen lassen. Das kannst du dann in die Form schreiben.
Wie geht das?
Form anklicken, dann in die Formelzeile z.B. =$A$1 schreiben. Fortan wird alles, was in der Zelle A1 steht in die Form übertragen.
Das kannst du natürlich auch per Makro machen.

Code: Alles auswählen

Sub bastler_Form_1()
Dim wkB As Workbook: Set wkB = ThisWorkbook
Dim shtA As Worksheet: Set shtA = wkB.Worksheets("Tabelle1")
Dim shaP As Shape: Set shaP = shtA.Shapes(1)

shaP.OLEFormat.Object.Formula = "=a1"

End Sub
Folgende Benutzer bedankten sich beim Autor theos für den Beitrag (Insgesamt 2):
xlKing, d'r Bastler
Benutzeravatar
theos
Beiträge: 51
Registriert: 15. Sep 2022, 21:48
Hat sich bedankt: 4 Mal
Danksagung erhalten: 35 Mal
Kontaktdaten:

Re: Shapes.TextFrame.Characters.Text bearbeiten ohne ...

#5

Beitrag von theos »

oder mit einer InputBox:

Code: Alles auswählen

Sub bastler_Form_2()


Dim wkB As Workbook: Set wkB = ThisWorkbook
Dim shtA As Worksheet: Set shtA = wkB.Worksheets("Tabelle1")
Dim shaP As Shape: Set shaP = shtA.Shapes(2)
shaP.OLEFormat.Object.Caption = InputBox("gib Text ein", "Eingabe")
End Sub
xlKing
Beiträge: 52
Registriert: 30. Mai 2024, 19:42
Hat sich bedankt: 5 Mal
Danksagung erhalten: 52 Mal
Kontaktdaten:

Re: Shapes.TextFrame.Characters.Text bearbeiten ohne ...

#6

Beitrag von xlKing »

Hallo Bastler, du kannst doch einfach eine Zelle befüllen lassen. Das kannst du dann in die Form schreiben.
Hey Theos,
diese Funktion kannte selbst ich noch nicht. Da hab ich ja direkt mal wieder was gelernt. :D

Grüße
Mr. K.
Benutzeravatar
d'r Bastler
Beiträge: 832
Registriert: 29. Aug 2022, 13:20
Hat sich bedankt: 224 Mal
Danksagung erhalten: 118 Mal

Re: Shapes.TextFrame.Characters.Text bearbeiten ohne ...

#7

Beitrag von d'r Bastler »

Moin allerseits,

lieben Dank Theo! für gleich zwei Tipps. Eine Auswahl eines Shapes ohne die Ohren scheint tatsächlich ausgeschlossen und die Idee mit der Zelle passt leider nicht in mein Konzept. Es sollen zu den Shapes (von denen ich drei übereinander gestapelt habe) keine Zellen sichtbar sein. Eine InputBox ist an der Stelle einfach zu groß - und bekanntlich nicht formatierbar.

Dann werde ich wohl meine Giraffe = Mini-Userform vor's Shape kleben weiter quälen müssen. Schade, dass man kleine USFs nicht exakt formatieren kann. Bei Width = 102 und Height = 50 scheint nach unten hin Schluss (auch wenn die MS-Hilfe etwas anderes behauptet). Aber damit kann ich leben.

Euch einen schönen Tach auch!
d'r Bastler von den VBAsteleien.de
Win 10 + Office 2019 & Win11 + Office 2021 + Visio 2019 pro & macOS.X15 + Office2019pro & Android12 & XL365
Benutzeravatar
theos
Beiträge: 51
Registriert: 15. Sep 2022, 21:48
Hat sich bedankt: 4 Mal
Danksagung erhalten: 35 Mal
Kontaktdaten:

Re: Shapes.TextFrame.Characters.Text bearbeiten ohne ...

#8

Beitrag von theos »

Ganz verstehen tu ich deine Intention nicht. Du kannst doch die Leute einfach drauflosklicken lassen und die Formen mit Text befüllen?
Stört dich das Punktezeug so arg? Hasst du Angst, dass einer was verschiebt?
Was sind das für Formen? Kreise? Herzen?
Weil ich würde da ganz einfach ein ActiveX-Textfeld davor legen, wenns ein Rechteck ist, ist das gar nicht so verkehrt. Letztlich macht PowerPoint oder Word das auch nicht anders. Textfeld vor die Form und gut ist.

Edit: Eine Userform kannst du im Zoom ein wenig kleiner kriegen.
Benutzeravatar
d'r Bastler
Beiträge: 832
Registriert: 29. Aug 2022, 13:20
Hat sich bedankt: 224 Mal
Danksagung erhalten: 118 Mal

Re: Shapes.TextFrame.Characters.Text bearbeiten ohne ...

#9

Beitrag von d'r Bastler »

Moin Theo,

meine Bastelei hat -und jetzt wirst Du mich für deppert halten, und es sei Dir ausdrücklich erlaubt :mrgreen:- mit Tabellenkalkulation ungefähr soviel zu tun, wie die o.g. Giraffe mit Rollschuhen. Und schon garnichts mit normalen XL-Benutzern. Denn ich baue mir ein Werkzeug zum Erstellen (und darum geht es mir zuerst) und Spielen von VORSICHT KOPF EINZIEHEN! kleinen Kreuzworträtseln, wie Du sie vielleicht aus der ZEIT oder der SZ kennst. Um die Ecke gedacht, eben.

Dazu habe ich ein Raster aus 8 x 9 Feldern gebastelt, das in vier Ebenen übereinander liegt. Die erste ist der Rahmen der Felder mit der Nummer der Frage/Aufgabe (klein, schwarz oben links), die zweite die Begrenzer am Ende eines Wortes (rote Linie) und eine mit der Ziffer für den Lösungsbuchstaben (grün, etwas größer, unten rechts). Die vierte Ebene ist dann das Shape, in das der User seine Buchstaben eingeben kann/soll/ möchte. Und genau da stören die Ohren erheblich.

In HTML/JavaScript lassen sich solche Kreuzworträtsel, in denen man einfach ein Feld anklickt und den Buchstaben eingibt, wohl recht einfach realisieren. Mit dem nächsten Klick ist man im nächsten Feld. Das 1:1 nachzubauen war mein Ziel. Also habe ich das mit Shapes versucht. Was -nun ja- bedingt geklappt hat.

Die Eingabe einfach in ein Zelle zu setzen, würde die Sache vielleicht vereinfachen. Allerdings müsste ich dann pro Feld einen Zellverbund basteln, der die drei Elemente Fragenr, Lösungswortbuchstabe und Eingabe ermöglicht. Mit den gewünschten Positionierungen also mind. neun Zellen / Feld. Aber das war mir zu lästig.
MCnogo.jpg

Mein Workaround klebt beim Klick dem Shape-Stapel jetzt eine Mini-USF vor die Nase, die sich je nach Frage senk/waagerecht nach der Eingabe bis zum Begrenzer ein Feld weiter bewegt. Hier mal eine Eingabe grafisch dargestellt:

MC.jpg
Mit der Eingabe wird der OK-Button fokussiert, eine leere Eingabe löscht einen vorhandenen Buchstaben. Die USF so zu formatieren, dass sie genau das Feld abdeckt, wollte mir nicht gelingen, aber mit der gezeigten Version kann ich leben. Zum Stichwort Zoom: Damit kann man zwar die Größe der Controls TextBox und CommandButton verändern, die der USF aber leider nicht. Kleiner als 55 x 102 ist wohl nicht zu machen.

Tust Du die Intention denn jetzt verstehen :roll: ?

Ich teste dann jetzt mal Deinen ActiveX-Vorschlag. Klingt nämlich gar nicht so schlecht. Vielen Dank dafür! Um die Ecke gedacht eben :D

Schöne Grüße!
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
d'r Bastler von den VBAsteleien.de
Win 10 + Office 2019 & Win11 + Office 2021 + Visio 2019 pro & macOS.X15 + Office2019pro & Android12 & XL365
Benutzeravatar
theos
Beiträge: 51
Registriert: 15. Sep 2022, 21:48
Hat sich bedankt: 4 Mal
Danksagung erhalten: 35 Mal
Kontaktdaten:

Re: Shapes.TextFrame.Characters.Text bearbeiten ohne ...

#10

Beitrag von theos »

Ja, kapiert.
Aber dafür ist das activeX ideal. Du musst nur dann, wenn du die Dinger platziert hast, deren Koordinaten irgendwo hinterlegen, die verschieben sich gerne mal und ich hab keine Ahnung, ob MS diesen Bug inzwischen raus hat.
Dafür hab ich irgendwo Code rumliegen, bei mir in der Arbeit nutzen wir das ständig.
Folgende Benutzer bedankten sich beim Autor theos für den Beitrag:
d'r Bastler
Antworten

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 0 Gäste