2017-04-18 1 views
0

Ich versuche, zwei Tastenkombinationen zu erstellen, die es mir ermöglichen, ausgewählte Wörter innerhalb eines Textes schnell nach rechts und links zu verschieben. Der ausgewählte Text sollte ein Wort nach links oder rechts verschieben. Hier ist, was ich tun möchteVerschieben von Wörtern in einem Text

1) Wählen Sie Wörter, z. "Dies ist" in dem Satz "Dies ist ein Baum" 2) Drücken Sie z.B. Strg + Alt + Pfeil nach rechts 3) Der Satz lautet nun "a this is tree" 4) Drücken Sie erneut ctrl alt + Pfeil nach rechts 5) Der Satz lautet jetzt "ein Baum das ist"

Die Idee ist, die Cut/Paste-Schritte zu ersetzen und den Prozess ein wenig effizienter und reibungsloser zu machen. Ich habe keine Kenntnisse in VB, aber es gelang mir, mit der Makrofunktion von Word zu kommen.

Das Problem mit dieser Funktion ist, dass die ausgewählten Wörter nicht mehr ausgewählt werden, sobald sie eingefügt werden. Das erneute Auslösen der Funktion (= Verschieben des Textes mehr als ein Wort) führt zu einem Fehler (ich müsste den entsprechenden Text erneut auswählen). Gibt es eine Möglichkeit, dass die ausgewählten Wörter nach dem Einfügen ausgewählt bleiben, damit ich die Funktion wiederholt auslösen kann?

Vielen Dank.

Antwort

0

Vielleicht möchten Sie diese Lösung versuchen. Die ersten beiden unten beschriebenen Verfahren sollten mit Ihren Tastaturkürzeln aufgerufen werden. Beide rufen den gleichen ausführenden Sub auf, jedoch mit anderen Parametern.

Sub MoveSelectionLeft() 
    ' call with keyboard shortcut 
    GetSelection True 
End Sub 

Sub MoveSelectionRight() 
    ' call with keyboard shortcut 
    GetSelection False 
End Sub 

Private Sub GetSelection(ByVal ToLeft As Boolean) 
    ' 22 Apr 2017 

    Dim Rng As Range 
    Dim SelTxt As String     ' selected text (trimmed) 
    Dim Sp() As String 

    Set Rng = Selection.Range 
    With Rng 
     SelTxt = Trim(.Text) 
     If ToLeft Then 
      .MoveStart wdWord, -1 
     Else 
      .MoveEnd wdWord, 1 
     End If 
     Sp = Split(Trim(.Text)) 

     If ToLeft Then 
      .Text = SelTxt & " " & Sp(0) & " " 
     Else 
      .Text = Sp(UBound(Sp)) & " " & SelTxt & " " 
     End If 
     .Find.Execute SelTxt 
     .Select 
    End With 
End Sub 
0

Eine billige Möglichkeit, dies zu tun, ist mit Lesezeichen. Führen Sie AddBookMark und DeleteBookMark jeweils vor und nach dem Verschieben des Textes aus.

Public Sub AddBookMark() 
    Dim myDocument As Document 
    Set myDocument = ActiveDocument 

    myDocument.Bookmarks.Add "MySelectedText", Selection 
End Sub 

Public Sub DeleteBookMark() 
    Dim myDocument As Document 
    Set myDocument = ActiveDocument 

    myDocument.Bookmarks("MySelectedText").Delete 
End Sub 

Sub moveRight() 
    Dim myDocument As Document 
    Set myDocument = ActiveDocument 

    Selection.Cut 
    Selection.moveRight Unit:=wdWord, Count:=1 
    Selection.PasteAndFormat (wdFormatOriginalFormatting) 

    myDocument.Bookmarks("MySelectedText").Select 
End Sub 
Verwandte Themen