Libreoffice 巨集基礎:跳到下一段測試大寫字母

Libreoffice 巨集基礎:跳到下一段測試大寫字母

我正在嘗試編寫一個宏,我需要跳到下一段,我將在其中測試第一個字母的大小寫。我花了幾個小時,只發現一些我認為應該很簡單的東西的文檔不準確或難以遵循。任何方向將不勝感激。到目前為止我有:

SUB FIND_PARAGRAPHS

Dim vDescriptor
dim Doc as object
dim Replace as object 
dim oCursor 
dim Proceed as Boolean
dim CapTest as String

vDescriptor = ThisComponent.createSearchDescriptor()
doc = ThisComponent
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

' test para begin; if capital test previous end 

oCursor = Doc.Text.createTextCursor()
Do 
    oCursor.gotoNextParagraph(false) 'NW
    CapTest = oCursor.goRight(1, true) 'NW
    if CapTest = ucase(CapTest) Then goto TestPreviousEnd
Loop While CapTest

TestPreviousEnd:

END SUB

答案1

有幾個問題:

  • 向右走()傳回一個布林值來指示成功,而不是所選的字串。
  • CapsTest是字串,而不是布林值,因此不能用作循環條件。
  • 您怎麼知道程式碼不起作用?也許您打算使用查看遊標,這將導致可見光標移動。 (但是文字遊標可能更好)。
  • 程式碼總是忽略第一段,這可能是故意的,但看起來很奇怪。
  • 未使用的變數較多,大小寫不一致。

這是工作代碼:

' 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

因此,如果文檔包含:

a
b
C
d

然後宏列印Found result: "C"

一定要檢查一下Andrew Pitonyak 的巨集文檔。它包含許多優秀的例子。

相關內容