Formularfelder kopieren (Details I) |
|
||||||||||||||||||||||||
Da die Originalbefehle bei gesetztem Formularschutz nicht zur Verfügung stehen, die Funktion aber weiterhin per Tastenkombination zur Verfügung stehen soll (funktioniert bis Word2003 - Word2007 sperrt dann auch die Tastenkombination), muss zuerst der Originalbefehl abgefangen werden. In dieser Prozedur wird zuerst überprüft, ob der Formularschutz gesetzt ist und in diesem Fall die neue Funktion BoldNeu aufgerufen. Ohne Formularschutz muss aber die Originalfunktion zur Verfügung stehen, was in diesem Fall entweder über die passende Dialogs(45)-Konstante oder durch Umschalten der Font-Eigenschaft .Bold = NOT CBool(.Bold) erreicht werden kann. Danach wird der Schaltflächenstatus in der neuen Symbolleiste gesetzt. Sub Bold() ' Originalbefehl: Fett If ActiveDocument.ProtectionType = wdAllowOnlyFormFields Then BoldNeu Else Dialogs(45).Execute 'Symbolleisten-Status setzen cbar_CTL("Fett") = Selection.Font.Bold End If End Sub In der Formularfunktion BoldNeu wird dann wieder zuerst der Formularschutz überprüft und anschließend der markierte Text in einem Property gespeichert.
' Markierten Text speichern
TextSelect = Selection.Range
Dazu wird der Wert über die Property Get- und Property Let-Prozeduren im Property "TextSelect" zwischengespeichert und wieder ausgelesen: Property Let TextSelect(sText As Range) ' Aktuelle Markierung speichern Set rngText = sText End Property Anschließend wird überprüft, ob Text markiert ist, da sich Word da mitunter unterschiedlich verhält: mal wird nur für die nächste Eingabe die Formatierung gesetzt, mal für das Wort, in dem die Eingabemarke steht. ' Fett umschalten ' Wenn kein Text markiert ist das aktuelle Wort formatieren If Len(TextSelect) = 0 Then Selection.Words(1).Font.Bold = Not CBool(Selection.Words(1).Font.Bold) bBold = CBool(Selection.Words(1).Font.Bold) Else Selection.Font.Bold = Not CBool(Selection.Font.Bold) bBold = CBool(Selection.Font.Bold) End If Danach wird der Schaltflächen-Status (gedrückt/nicht gedrückt) über die Hilfsfunktion cbar_CTL(Tag) auf der Symbolleiste gesetzt: 'Schaltflächen-Status setzen cbar_CTL("Fett") = bBold Achtung Aus diesem Grund muss für den ungeschützten Bereich überprüft werden, ob ein Text markiert ist Len(TextSelect) bevor ggf. die Markierung wieder gesetzt wird. |
www.chf-online.de/vba/vbpformularformatieren2.htm | © 2001-11 Christian Freßdorf (Zaphod-Systems) |