Writer - Macro für Zeichen einfügen

Hallo,

Ich habe keine Erfahrung mit Makros in LibreOffice. Zum einfügen von
bestimmten nationalen Sonderzeichen habe ich mit (mit Icons auf einer
Symbolleiste verknüpfte) Makros wie diesen:

Sub smitHatschekKlein
Dim doc as variant
Dim controller as variant
Dim textviewcursor as variant
doc = ThisComponent
controller = doc.getCurrentController()
textviewcursor = controller.getViewCursor()
Dim character as String
character = chr(clng("&H0161"))
textviewcursor.setString(character)
textviewcursor.goRight(1, false)
End Sub

Der obige Makro fügt ein s mit Hatschek (š) an die aktuelle Position
ein. Das funktioniert im Normnalfall, nicht aber wenn sich der Cursor
innerhalb einer Tabellenzelle befindet.

Woran kann das liegen?

Vielen Dank
Helmut (Leininger)

Helmut Leininger schrieb:

Hallo,

Ich habe keine Erfahrung mit Makros in LibreOffice. Zum einfügen von
bestimmten nationalen Sonderzeichen habe ich mit (mit Icons auf einer
Symbolleiste verknüpfte) Makros wie diesen:

Sub smitHatschekKlein
Dim doc as variant
Dim controller as variant
Dim textviewcursor as variant
doc = ThisComponent
controller = doc.getCurrentController()
textviewcursor = controller.getViewCursor()
Dim character as String
character = chr(clng("&H0161"))
textviewcursor.setString(character)
textviewcursor.goRight(1, false)
End Sub

Der obige Makro fügt ein s mit Hatschek (š) an die aktuelle Position
ein. Das funktioniert im Normnalfall, nicht aber wenn sich der Cursor
innerhalb einer Tabellenzelle befindet.

Woran kann das liegen?

Du kannst statt setString vom ViewCursor mit insertString auf dem Text arbeiten.

Sub smitHatschekKlein
Dim doc as variant
Dim controller as variant
Dim textviewcursor as variant
doc = ThisComponent
controller = doc.getCurrentController()
textviewcursor = controller.getViewCursor()
Dim character as String
character = chr(clng("&H0161"))
Dim otext as variant
If IsEmpty(textviewcursor.Cell) Then
         otext=doc.text
Else
         otext=textviewcursor.Cell.Text
End If
otext.insertString(textviewcursor, character,false)
End Sub

Mit freundlichen Grüßen
Regina

Hallo Regina,

Vielen Dank!

Helmut

Hallo Helmut,

noch ein Verbesserungsvorschlag. Damit kannst du auch innerhalb von Rahmen Sonderzeichen einfügen. Ich habe doc.text durch textviewcursor.text ersetzt.

Mit freundlichen Grüßen
Regina

Sub smitHatschekKlein
Dim oDoc as variant
  oDoc = ThisComponent
Dim oCurrentController as variant
  oCurrentController = oDoc.getCurrentController()
Dim oTextViewCursor as variant
  oTextViewCursor = oCurrentController.getViewCursor()
Dim oText as variant
If IsEmpty(oTextViewCursor.Cell) Then
         oText=oTextViewCursor.Text
Else
         oText=oTextViewCursor.Cell.Text
End If
oText.insertString(oTextViewCursor,chr(clng("&H0161")),false)
End Sub

Hallo Regina,

nochmals vielen Dank.

Helmut