2017-04-18 13 views
0

私は選択された単語をテキスト内で左右にすばやく移動できる2つのキーボードショートカットを作成しようとしています。選択したテキストは、1語を左または右に移動する必要があります。 ここが私のしたいことです。テキスト内の単語を移動する

1)例: 「これは木です」という文章では「これは」です 2)たとえばを押します。 Ctrl + Alt +矢印を右に移動 3)文章は「これは木です」 4)もう一度ctrlを押す+矢印を右に移動 5)文章は「これは木です」

考え方は、カット/ペーストのステップを置き換え、プロセスをより効率的かつスムーズにすることです。 私はVBでの知識は持っていませんが、Wordのマクロ機能を使って近づくことができました。

この機能の問題は、選択した単語が貼り付けられた後で選択されなくなることです。したがって、関数を再度トリガーする(= 1単語以上のテキストを動かす)とエラーになります(関連するテキストを再度選択する必要があります)。選択された単語が貼り付けられた後に選択されたままになっているので、何度も機能をトリガーすることはできますか?

多くのありがとうございます。

答えて

0

このソリューションをお試しください。以下の最初の2つの手順は、キーボードショートカットで呼び出す必要があります。両方とも同じ実行サブを呼び出しますが、パラメータは異なります。

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

これを行う安い方法はブックマークです。テキストを移動する前後のある時点で、それぞれAddBookMarkとDeleteBookMarkを実行します。

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 
関連する問題