PDA

Vollständige Version anzeigen : Textfelder in VBA bearbeiten


Matthias_Metzger
19.07.2001, 10:19
Hallo Leute,

Mein Umgebung:
- Office97 (SR2b)
- WinNT 4.0 (SP6a)

Ich habe folgendes Problem.

Ich will in VBA einige Textfelder mit einer neuer Schriftart belegen. Dazu selektiere ich jedes entsprechende Textfeld in einer Schleife und weise ihm die Schriftart zu. Leider markiert er mir jedoch beim Schleifendurchlauf jedes neue Textfeld, ohne die Selektion des vorherigen aufzuheben. Es ist also so, als ob man mit gedrückter Umschalt-Taste die Textfelder selektieren würde. Es entsteht eine Mehrfachauswahl, die ich aber nicht will.

Meine Frage ist also:
Wie deselektiere ich das vorherige Textfeld, um das nächste in der Schleife zu selektieren, ohne daß eine Mehrfachauswahl entsteht ?

Mein Quelltext:

Sub Textfelder_Schriftart_ändern()
Dim Zähler As Integer
Dim Name As String
Dim Textfeld As Shape
Dim Antwort As Integer
Dim Schriftart As String

Schriftart = "TheSansOffice"
For Zähler = 1 To ActiveDocument.Shapes.count
Set Textfeld = ActiveDocument.Shapes(Zähler)
If (Textfeld.Type = msoTextBox) Then 'Ist das Shape-Objekt ein Textfeld ?
Textfeld.TextFrame.TextRange.Select
'Für jedes Textfeld um Erlaubnis fragen
Antwort = MsgBox("Schriftart für " + Textfeld.Name + " ändern in " + Schriftart + " ?", vbYesNoCancel, "Schriftart des Textfeldes")
If (Antwort = vbYes) Then
Selection.Font.Name = Schriftart
End If
If (Antwort = vbCancel) Then
Exit For
End If
End If
Next Zähler
End Sub


Danke im Voraus.

Gruß
M. Metzger

jinx
19.07.2001, 20:48
Moin, Matthias,

abgesehen vom Tipfehler msobox statt MsgBox: heißt nicht das Gegenteil von .Select .Unselect?

Also probieren: Hinter der Line
Selection.Font.Name = Schriftart
Textfeld.TextFrame.TextRange.Unselect

Moderatorenänderung, notwenig geworden durch die Softwareumstellung zum 1.1.2003:
Doppelte/falsche/nicht mehr vorhandene Signatur gelöscht/geändert

Matthias_Metzger
20.07.2001, 07:54
Hallo Jinx,

die Klasse "Range" hat keine Unselect-Methode. Die hätte ich wohl auch selber gefunden. Ich habe mich schon bemüht, bevor ich das Forum befragt habe.
Auch sonst gibt es im VBA kein Unselect.

Gruß
M. Metzger

PS: Wo habe ich da msobox statt MsgBox geschrieben ?