Selection オブジェクト (Word)

ウィンドウまたはウィンドウ枠の現在の選択範囲を表します。 選択範囲はドキュメントで選択 (強調表示) されている領域を表すか、ドキュメントで何も選択されていない場合は挿入ポイントを表します。 ドキュメント ウィンドウ枠ごとに Selection オブジェクトは 1 つだけであり、アプリケーション全体で 1 つの Selection オブジェクトのみをアクティブにできます。

重要

この方法が変更されました。 ユーザーの選択範囲にコメントが含まれている場合、Selection.BoldRun のような VBA の Selection コマンドを使用すると、ユーザーが選択したテキストまたは Selection.TypeTxt コマンドに太字の書式が適用されなくなったり、コメントが含まれているユーザーの選択範囲に、テキストが挿入されなくなったりします。

備考

Selection オブジェクトを返すには、 Selection プロパティを使用します。 選択範囲 プロパティにオブジェクトの区切りが使用されていなければ、Microsoft Word はアクティブなドキュメント ウィンドウのアクティブなウィンドウ枠から選択範囲を返します。 次の例は、アクティブなドキュメントから現在の選択範囲をコピーします。

Selection.Copy

次の例では、 Documents コレクションの 3 番目のドキュメントから選択範囲を削除します。 現在の選択範囲にアクセスするために、ドキュメントをアクティブにする必要はありません。

Documents(3).ActiveWindow.Selection.Cut

次の例では、アクティブなドキュメントの 1 番目のウィンドウ枠から選択範囲をコピーし、2 番目のウィンドウ枠に貼り付けます。

ActiveDocument.ActiveWindow.Panes(1).Selection.Copy 
ActiveDocument.ActiveWindow.Panes(2).Selection.Paste

Text プロパティは、Selection オブジェクトの既定のプロパティです。 このプロパティを使用して、現在の選択範囲のテキストを設定または返します。 次の例では、現在の選択範囲内のテキストを変数 strTempに割り当てて、段落記号である場合は、最後の文字を削除します。

Dim strTemp as String 
 
strTemp = Selection.Text 
If Right(strTemp, 1) = vbCr Then _ 
 strTemp = Left(strTemp, Len(strTemp) - 1)

Selection オブジェクトには、折りたたんだり展開したりできる、または現在の選択範囲を変更できるさまざまなメソッドやプロパティがあります。 次の例では、文書の末尾にカーソルを移動し、最後の 3 つの行を選択します。

Selection.EndOf Unit:=wdStory, Extend:=wdMove 
Selection.HomeKey Unit:=wdLine, Extend:=wdExtend 
Selection.MoveUp Unit:=wdLine, Count:=2, Extend:=wdExtend

Selection オブジェクトには、ドキュメントで選択したテキストを編集できるさまざまなメソッドやプロパティがあります。 次の例では、作業中の文書の最初の文を選択し、新しい段落に置き換えます。

Options.ReplaceSelection = True 
ActiveDocument.Sentences(1).Select 
Selection.TypeText "Material below is confidential." 
Selection.TypeParagraph

次の例では、 Documents コレクションの最初のドキュメントの最後の段落を削除して、2 番目のドキュメントの最初に貼り付けます。

With Documents(1) 
 .Paragraphs.Last.Range.Select 
 .ActiveWindow.Selection.Cut 
End With 
 
With Documents(2).ActiveWindow.Selection 
 .StartOf Unit:=wdStory, Extend:=wdMove 
 .Paste 
End With

Selection オブジェクトには、現在の選択範囲の書式設定を変更できるさまざまなメソッドやプロパティがあります。 次の例では、現在の選択範囲のフォントを Times New Roman から Tahoma に変更します。

If Selection.Font.Name = "Times New Roman" Then _ 
 Selection.Font.Name = "Tahoma"

現在の選択範囲に関する情報を返すには、FlagsInformation、および Type などのプロパティを使用します。 次のプロシージャの例を使用して、アクティブなドキュメントに選択範囲があるかどうかを判別できます。選択範囲がなければ、残りのプロシージャはスキップされます。

If Selection.Type = wdSelectionIP Then 
 MsgBox Prompt:="You have not selected any text! Exiting procedure..." 
 Exit Sub 
End If

カーソル位置で選択範囲が折りたたまれている場合でも、必ずしも空ではありません。 たとえば、Text プロパティはカーソル位置の右側に文字を返します。この文字は Selection オブジェクトの Characters コレクションにも表示されます。 ただし、折りたたまれている選択範囲から、[切り取り] または [コピー] などのメソッドを呼び出すと、エラーが発生します。

ユーザーは連続したテキストを表していない文書の領域を選択することができます (たとえば、Alt キーとマウスを使用する場合)。 このような選択範囲の動作は予測できないため、任意の処理を実行する前に、選択範囲の Type プロパティをチェックするステップをコードに含めることもできます (Selection.Type = wdSelectionBlock)。

同様に、表のセルを含む選択範囲により、予測できない動作が発生する可能性もあります。 Information プロパティは、選択範囲がテーブル内にあるかどうかを通知します (Selection.Information(wdWithinTable) = True)。 次の例では、選択範囲が通常かどうかを判定します (テーブルの行や列ではない、縦方向のテキスト ブロックではないなど)。これを使用して、任意の処理を実行する前に、現在の選択範囲をテストできます。

If Selection.Type <> wdSelectionNormal Then 
 MsgBox Prompt:="Not a valid selection! Exiting procedure..." 
 Exit Sub 
End If

Range オブジェクトは、 Selection オブジェクトと多くの同じメソッドとプロパティを共有するため、現在の選択範囲を物理的に変更する理由がない場合、ドキュメントを操作するには Range オブジェクトを使用します。 SelectionRange オブジェクトの詳細については、Selection オブジェクトを操作するRange オブジェクトを操作するを参照してください。

メソッド

プロパティ

関連項目

サポートとフィードバック

Office VBA またはこの説明書に関するご質問やフィードバックがありますか? サポートの受け方およびフィードバックをお寄せいただく方法のガイダンスについては、Office VBA のサポートおよびフィードバックを参照してください。