Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Testen ob markierter Text leer ist

197 views
Skip to first unread message

Rolf Unger

unread,
Jul 18, 2002, 12:03:49 PM7/18/02
to
Hallo Leute,

Nachdem ich jetzt einen halben Nachmittag damit verbracht habe,
eine brauchbare Variante zu finden, um zu ueberpruefen ob ein markierter
Bereich leer ist muss ich jetzt mal Frust loslassen.

Nachdem, was ich nach einer schnellen Suche bei Google nach "Selection"
und "leer" gefunden habe, sieht das ganz so aus als wuerde sich hier
jeder zu einem

If Len(Selection.Text) < 2 Then ...

verbiegen. (Das hehre Prinzip vom Selbsdokumentierenden Code kann, wenn
Microsoft einen zu solchen Handstaenden zwingt wohl zu Grabe tragen).

Es sollte also tatsaechlich so sein, -- und nicht nur an meiner etwas
betagten Version Word97 liegen -- dass eine Selection nie leer ist?

Selection.Characters.Count gab bei mir 1 zurueck und zwar in beiden
Faellen, wenn ich nicht markiert hatte wo|rt _
oder wenn ich einen Buchstaben markiert hatte wo|r|t

Macht ja unter Umstaenden Sinn, das Selection mit "Cursor-Position"
gleich gesetzt wird (z.B. wenn ich per Makro den Cursor verschiebe),
aber das Irrationale dabei ist, dass in beiden Faellen vorgegeben
wird, dass ein Zeichen selektiert ist, sobald ich aber versuche das
zu kopieren, gibt's ploetzlich wieder einen Unterschied:

In dem Fall, wo tatsaechlich nichts markiert ist, wirft die
"Selection.Copy" Methode einen Laufzeitfehler aus -- weil kein
Text markiert sei!

Hab' ich schon erwaehnt, dass die ".Word" und die ".Text" Eigenschaften
vom Selection-Object sich genauso krank verhalten wie ".Characters".

Mein Test in der Verzweiflungsversion sah dann so aus:

On Error Resume Next
Selection.Copy
If Err.Num = 4050 Then
' nichts markiert
....
Else
' markierten Bereich verarbeiten
....
End If

Aber das kanns doch nicht sein! Wieso gibt es kein

Selection.IsEmpty ??

Anmerkungen aller Art sind willkommen!

Ciao, Rolf.

Lutz Gentkow

unread,
Jul 18, 2002, 2:42:00 PM7/18/02
to
Hallo Rolf,

schon mal in der Onlinehilfe zu Selection.Text nachgeschaut? Dort ist
das Phänomen beschrieben.

Es gab mal einen tollen Artikel von Romke Soldaat, in dem sich mittels
Kontextmenü feststellen ließ, ob Kopieren möglich ist oder nicht. Leider
finde ich den Artikel nicht mehr, möglicherweise ist er nicht mehr
allgemein zugänglich.

Viele Grüße vom Niederrhein

Lutz, MVP für Word/VBA

Thomas Gahler

unread,
Jul 18, 2002, 2:52:19 PM7/18/02
to
Hallo Rolf

> Nachdem, was ich nach einer schnellen Suche bei Google nach "Selection"
> und "leer" gefunden habe, sieht das ganz so aus als wuerde sich hier
> jeder zu einem

In Zukunft wird man jetzt was besseres finden ;-)

> Aber das kanns doch nicht sein! Wieso gibt es kein
> Selection.IsEmpty ??

Vielleicht ist das gut für deine Zwecke


Sub Demo()
With Selection.Range
If .Start = .End Then
Application.StatusBar = "Nichts markiert"
Else
Application.StatusBar = "Markiert ist: " & Selection.Range.Text
End If
End With
End Sub


--


----------------------------------------------------
Umgebung: Windows XP, Office XP (SP1)

Greetings from Switzerland
Thomas Gahler
MVP für Word VBA

Rolf Unger

unread,
Jul 19, 2002, 4:42:55 AM7/19/02
to
Hallo Thomas, hallo Lutz!

"Thomas Gahler" <wurze...@SPAM.bluemail.ch> wrote in message news:<eCdRt3oLCHA.2436@tkmsftngp11>...


> > Aber das kanns doch nicht sein! Wieso gibt es kein
> > Selection.IsEmpty ??
> Vielleicht ist das gut für deine Zwecke
>
>
> Sub Demo()
> With Selection.Range
> If .Start = .End Then
> Application.StatusBar = "Nichts markiert"
> Else
> Application.StatusBar = "Markiert ist: " & Selection.Range.Text
> End If
> End With
> End Sub
>

Danke, das sieht gut aus. Da sieht man wenigstens am Code selber, dass
ein Bereich untersucht wird, und man muss sich nicht wundern weshalb
was in die Zwischenablage kopiert wird, das spaeter dann doch nicht
verwendet wird.

Von Excel her bin ich gewohnt, dass ein Selection Objekt immer ein
Range Objekt ist (stimmt uebrigens auch nicht, wie ich beim Nachschauen
in der Hilfe gemerkt habe ;-). Daher blieb ich beim Suchen nach Objekt-
Eigenschaften, in der falschen Hierachie-Stufe haengen mit der vorschnellen
Folgerung, dass ein Range-Objekt auch nicht mehr bietet als das
Selection-Objekt.

Nochmal danke an Euch beide!

Rolf.

Rainer H. Rauschenberg

unread,
Jul 19, 2002, 2:27:52 PM7/19/02
to
On 18 Jul 2002, Rolf Unger wrote:

> Nachdem ich jetzt einen halben Nachmittag damit verbracht habe,
> eine brauchbare Variante zu finden, um zu ueberpruefen ob ein markierter
> Bereich leer ist muss ich jetzt mal Frust loslassen.

[...]

Debug.Print Selection.Start & " " & Selection.end

Rainer "hat bei mir bisher funktioniert -- W97SR2NT4SP6" Rauschenberg

0 new messages