Makro um Wort vorwärts oder rückwärts zu schieben

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: Makro um Wort vorwärts oder rückwärts zu schieben

von Stephan » Do, 17.05.2007 20:45

Hallo Wolfgang ,
wäre es für dich okay, wenn ich dir dazu ein paar Fragen per Mail stelle?


Ja, kannst Du tun.


Gruß
Stephan

von Stephan » Do, 17.05.2007 19:13

Was mache ich falsch?
Naja, wie ich schrieb sind 3 Fälle zu unterscheiden:
*die Markierung umfasst am Anfang und Ende kein Leerzeichen zum 'umgebenden' Text
*die Markierung umfasst rechts ein Leerzeichen zum 'umgebenden' Text
*die Markierung umfasst links ein Leerzeichen zum 'umgebenden' Text
das hier sollte ähnlich funktionieren wie das Obenstehende, probiere es mal aus:

Code: Alles auswählen

Sub markierten_text_verschieben_2()
x = ThisComponent.getCurrentSelection
tmp = x(0).String
cursor = ThisComponent.Text.CreateTextCursorByRange(x(0))
v_cursor=ThisComponent.GetCurrentController.ViewCursor
If LEFT(tmp, 1) <> " " AND RIGHT(tmp, 1) <> " " Then
		cursor.goRight(1,true)
		v_cursor.gotoRange(cursor,true)
		v_cursor.String = ""
		x = ThisComponent.getCurrentSelection
		cursor = ThisComponent.Text.CreateTextCursorByRange(x(0))
		cursor.gotoPreviousWord(false)
		v_cursor.gotoRange(cursor,false)
		v_cursor.String = tmp & " "
	Elseif Right(tmp, 1) = " " Then
		v_cursor.gotoRange(cursor,true)
		v_cursor.String = ""
		x = ThisComponent.getCurrentSelection
		cursor = ThisComponent.Text.CreateTextCursorByRange(x(0))
		cursor.gotoPreviousWord(false)
		v_cursor.gotoRange(cursor,false)
		v_cursor.String = TRIM(tmp) & " "
	Else
		v_cursor.gotoRange(cursor,true)
		v_cursor.String = ""
		x = ThisComponent.getCurrentSelection
		cursor = ThisComponent.Text.CreateTextCursorByRange(x(0))
		cursor.GotoNextWord(false)
		cursor.gotoPreviousWord(false)
		v_cursor.gotoRange(cursor,false)
		v_cursor.String = TRIM(tmp) & " "
End If
End Sub


Gruß
Stephan

von Stephan » Do, 17.05.2007 12:59

Ich komme mit einem Makro bis zur Selektion, aber weiß nicht, wie es geht, das nächste Wort zu "überspringen".


im Prinzip mit:

Code: Alles auswählen

.GotoNextWord
es kommt aber darauf an (ggf. wo der Cursor innerhalb der Selektion steht - abhängig davon wie Du es löst) und was selektiert ist, 3 Fällen treten auf:

*die Markierung umfasst am Anfang und Ende kein Leerzeichen zum 'umgebenden' Text
*die Markierung umfasst rechts ein Leerzeichen zum 'umgebenden' Text
*die Markierung umfasst links ein Leerzeichen zum 'umgebenden' Text

Etwas Probleme bereiten auch mögliche enthaltene Satzzeichen, deshalb schau mal ob das Dir schon reicht:

Code: Alles auswählen

Sub markierten_text_verschieben()
x = ThisComponent.getCurrentSelection
tmp = x(0).String
cursor = ThisComponent.Text.CreateTextCursorByRange(x(0))
v_cursor=ThisComponent.GetCurrentController.ViewCursor
If LEFT(tmp, 1) <> " " AND RIGHT(tmp, 1) <> " " Then
		cursor.goRight(1,true)
		v_cursor.gotoRange(cursor,true)
		v_cursor.String = ""
		x = ThisComponent.getCurrentSelection
		cursor = ThisComponent.Text.CreateTextCursorByRange(x(0))
		cursor.GotoEndOfWord(false)
		cursor.GoRight(1,false)
		v_cursor.gotoRange(cursor,false)
		v_cursor.String = tmp & " "
	Elseif Right(tmp, 1) = " " Then
		v_cursor.gotoRange(cursor,true)
		v_cursor.String = ""
		x = ThisComponent.getCurrentSelection
		cursor = ThisComponent.Text.CreateTextCursorByRange(x(0))
		cursor.GotoEndOfWord(false)
		cursor.GoRight(1,false)
		v_cursor.gotoRange(cursor,false)
		v_cursor.String = tmp
	Else
		v_cursor.gotoRange(cursor,true)
		v_cursor.String = ""
		x = ThisComponent.getCurrentSelection
		cursor = ThisComponent.Text.CreateTextCursorByRange(x(0))
		cursor.GotoNextWord(false)
		cursor.GotoEndOfWord(false)
		v_cursor.gotoRange(cursor,false)
		v_cursor.String = tmp
End If
End Sub

Gruß
Stephan

Nach oben