Es gibt mehrere Probleme:
- goRight () gibt einen Boolean- Wert zurück, um den Erfolg anzuzeigen, nicht die ausgewählte Zeichenfolge.
CapsTest
ist eine Zeichenfolge und keine boolesche Zeichenfolge. Daher kann sie nicht als Schleifenbedingung verwendet werden.- Woher wussten Sie, dass der Code nicht funktionierte? Möglicherweise wollten Sie den Ansichtscursor verwenden, wodurch sich der sichtbare Cursor bewegen würde. (Ein Textcursor ist jedoch wahrscheinlich besser).
- Der Code ignoriert immer den ersten Absatz, der beabsichtigt sein kann, aber seltsam erscheint.
- Es gibt viele ungenutzte Variablen und die Großschreibung ist inkonsistent.
Hier ist der Arbeitscode:
' Find the first paragraph in the document that begins with a capital letter. Sub Find_Capitalized_Paragraph Dim oDoc As Object Dim oCursor As Object Dim Proceed As Boolean Dim CapTest As String oDoc = ThisComponent oCursor = oDoc.Text.createTextCursor() oCursor.gotoStart(False) Do oCursor.goRight(1, True) CapTest = oCursor.getString() If CapTest <> "" And CapTest = UCase(CapTest) Then Goto TestPreviousEnd oCursor.gotoNextParagraph(False) Loop While CapTest <> "" MsgBox("No results.") Exit Sub TestPreviousEnd: MsgBox("Found result: """ & CapTest & """") End Sub
Wenn das Dokument also Folgendes enthält:
a b C d
Dann druckt das Makro Found result: "C"
.
Schauen Sie sich unbedingt das Makrodokument von Andrew Pitonyak an . Es enthält viele hervorragende Beispiele.