das folgende Makro erhöht die selektierten Zeichen (auch Mehrfachselektionen) realtiv um einen Pt bzw. den eingetragen Betrag. Jetzt suche ich nur noch eine Kontrolle, dass auch Zeichen selektiert sind bzw. es soll eine Meldung kommen, wenn nur ein leerer Absatz markiert ist.
Code: Alles auswählen
Sub DecreaseSelected
Dim objDoc As Object
Dim objSelections As Object
Dim objSel As Object
Dim objCursor As Object
Dim iCount As Integer
Dim oTextElementEnum As Object
Dim oTextElement As Object
Dim iPt As Integer
iPt= InputBox ("Bitte eine Pt-Verkleinerung eingeben:","Schrifthöhe ändern:","1")
objDoc = ThisComponent
objSelections = objDoc.getCurrentSelection()
For iCount = 0 To objSelections.Count-1
objSel = objSelections(iCount)
objCursor = objDoc.Text.createTextCursorByRange(objSel)
xray objCursor
' If objCursor.IsCollapsed() Then Msgbox "kein Text ist selektiert"
If Not objCursor.IsCollapsed() Then 'is not emtpy
oTextElementEnum = objCursor.createEnumeration()
While oTextElementEnum.hasMoreElements()
oTextElement = oTextElementEnum.nextElement
'verkleinern um 1 pt.
oTextElement.CharHeight = oTextElement.CharHeight-iPt
Wend
End If
Next
End Sub