5.7k Aufrufe
Gefragt in Textverarbeitung von peko Mitglied (235 Punkte)
Hallo alle,

ich habe ein kleines Makro erstellt, das bei Aufruf einen vorher markierten Text durchstreicht:

Sub Durchgestrichen()
With Selection.Font
.StrikeThrough = True
End With
End Sub

Aufruf dieses Makros über ein dafür erstelltes Symbol in einer Symbolleiste funktioniert auch.

Nun möchte ich dieses Makro über eine Befehlsschaltfläche oder Ähnliches, aber eben nicht über ein Symbol aufrufen.

Hat bisher leider nicht funktioniert. Kann jemand helfen?

Gruß
Peter

6 Antworten

0 Punkte
Beantwortet von sigiru Mitglied (293 Punkte)
Nun möchte ich dieses Makro über eine Befehlsschaltfläche oder Ähnliches, aber eben nicht über ein Symbol aufrufen.

Hallo Peter,

ich bin mir nicht ganz sicher, ob ich wirklich verstanden habe, was Du meinst ...

Unter Extras / Anpassen und Rechtsklick auf Dein Symbol kannst Du "nur Text (immer)" wählen, dann wird kein Symbol mehr angezeigt, sondern stattdessen der Text, der hinter "Name:" angegeben ist.

Als Alternative könntest Du auch ein Tastatur-Kürzel zuweisen: Extras / Anpassen / Tastatur / Format / Durchgestrichen und dann die gewünschte Tastenkombination eingeben.

Gruß sigiru
0 Punkte
Beantwortet von peko Mitglied (235 Punkte)
Hallo sigiru,

danke für die Mühe, aber deine Antwort löst mein Problem nicht.

Mein Ziel ist, von der Arbeit mit einem Makro ganz wegzukommen und statt dessen über einen VBA-Code z.B. hinter einer Befehlsschaltfläche die Streichung vornehmen zu lassen. Ich erhalte aber immer den Hinweis auf Fehler 4605 und den Erläuterungstext dazu:

"Diese Methode oder Eigenschaft ist nicht verfügbar, weil das Objekt auf ein Zeichnungsobjekt verweist."

Wieso soll ein markierter Text ein "Zeichnungsobjekt" sein? Ich verstehe es nicht und wäre für erfrolgreiche Hilfe wirklich dankbar.

Gruß
Peter
0 Punkte
Beantwortet von son_quatsch Experte (5.3k Punkte)
Wir reden hier von MS Word, oder?

Ansicht -> Symbolleisten -> Steuerelement-Toolbox -> Befehlsschaltfläche -> auf das leere Word-Dokument platziert -> Eigenschaften (in der Symbolleiste) -> Eigenschaft "TakeFocusOnClick" auf "False" -> Rechtsklick auf Button -> Code anzeigen -> deine drei Zeilen von oben eingetragen (die aber auch eine sein kann, nämlich Selection.Font.StrikeThrough = True) ->
Entwurfsmodus beenden (in der Symbolleiste) -> etwas Text eingetippt -> Text markiert -> Button angeklickt -> funktioniert.

Wie ist deine Vorgehensweise?
0 Punkte
Beantwortet von sigiru Mitglied (293 Punkte)
Mein Ziel ist, von der Arbeit mit einem Makro ganz wegzukommen und statt dessen über einen VBA-Code z.B. hinter einer Befehlsschaltfläche die Streichung vornehmen zu lassen.

Hallo Peter,

ein Makro besteht aus VBA-Code - worin liegt da für Dich der Unterschied?

Gruß sigiru
0 Punkte
Beantwortet von peko Mitglied (235 Punkte)
@ son quatsch

Danke vielmals für deine Hilfe. Hatte eigentlich alles schon so gemacht wie du beschrieben hast. Einzig "TakeFocusOnClick" auf "False" zu setzen, hatte ich vorher nicht getan. Was bewirkt das eigentlich?

Jetzt funktioniert es jedenfalls wie gewünscht. Danke.

Liebe Grüße
Peter
0 Punkte
Beantwortet von son_quatsch Experte (5.3k Punkte)
Steuerelemente wie ein Button haben einen Fokus, genauso wie ihn Textfelder haben können. Der Fokus kann aber immer nur an einer Stelle sein zu einer Zeit. In dem Moment, in dem du den Button klickst, hat dieser dann schon den Fokus (und damit streicht sich eigentlich die Button-Beschriftung selbst durch, statt der Text in dem Dokument).

Das Makro funktioniert also nur, wenn zu dem Zeitpunkt des Ausführens auch der Fokus auf dem Dokument ist und auf nichts anderem. Das kommt daher, weil es so generell geschrieben ist (obwohl: ich vermute es wurde nur einfach "aufgenommen").
...