Wordには非常に強力な機能があり、太陽の下でほぼすべてのものを検索できます。ただし、検索できないものの1つは、段落の境界線です。たとえば、左の境界線がオンになっているすべての段落を検索したい場合、それを行うことはできません。ただし、これを回避する方法はいくつかあります。

最初の回避策は、単にスタイルを使用して段落をフォーマットすることです。

スタイルを使用していて、そのスタイルで段落の左側の境界線が必要な場合は、そのスタイルを使用して段落を簡単に検索できます。

(正確にスタイルを検索する方法は、_WordTips._の他の問題でカバーされています。)

2番目に考えられる回避策は、マクロを使用して検索を行うことです。

マクロを使用すると、段落に境界線属性が設定されているかどうかを簡単に確認できます。次のマクロは、ドキュメント内の各段落をステップスルーします。境界属性のいずれかが設定されている段落が見つかると、その段落が選択され、マクロが停止します。

Sub SearchForBorders1()

Dim k As Word.Paragraph     Dim bFound As Boolean

For Each k In ActiveDocument.Paragraphs         bFound = False         If k.Borders(wdBorderTop).LineStyle <> wdLineStyleNone _           Then bFound = True         If k.Borders(wdBorderLeft).LineStyle <> wdLineStyleNone _           Then bFound = True         If k.Borders(wdBorderBottom).LineStyle <> wdLineStyleNone _           Then bFound = True         If k.Borders(wdBorderRight).LineStyle <> wdLineStyleNone _           Then bFound = True

If bFound Then             k.Range.Select             Exit Sub         End If     Next k End Sub

このマクロは、境界線のある段落があまりない場合に非常に便利です。どうして?マクロは常にドキュメントの先頭から検索を開始するため、境界線が設定された最初の段落のみが検索されます。

別のマクロアプローチを使用して、挿入ポイントが配置されている段落以外の段落の境界線を検索できます。次のマクロはまさにそれを実行します。現在の段落の後で検索を開始し、境界属性のいずれかが設定されている段落に到達すると停止します。このマクロは段落全体を選択しないことに注意してください。挿入ポイントを境界線が設定されている段落に移動するだけです。

Sub SearchForBorders2()

Static a As Long, l As Long     Dim b As Boolean     Dim bd As Border     Dim bds As Borders     Dim prg As Paragraph     Dim prgs As Paragraphs     Dim re As Range     Dim se As Selection     Dim doc As Word.Document

Set se = Selection     Set re = se.Range     Set doc = ActiveDocument     If se.Start < l Then a = se.Start     With doc.Content         Set bds = .Borders         re.Start = a         re.End = .End     End With     For Each bd In bds         b = bd = True         If b Then Exit For     Next     If Not b Then Exit Sub

Set prgs = re.Paragraphs     For Each prg In prgs         Set re = prg.Range         If InStr(re.Text, Chr(13)) = 0 Then             re.End = re.End + 1         End If         Set bds = re.Borders         For Each bd In bds             b = bd = True             If b Then Exit For         Next         If b Then             a = re.Start             se.Start = re.Start             se.End = re.Start             a = re.End             l = se.Start             Exit Sub         End If     Next     a = 0     MsgBox "No more borders found"

End Sub

注:

このページ(または_WordTips_サイトの他のページ)で説明されているマクロの使用方法を知りたい場合は、役立つ情報を含む特別なページを用意しました。

_WordTips_は、費用効果の高いMicrosoftWordトレーニングのソースです。

(Microsoft Wordは、世界で最も人気のあるワードプロセッシングソフトウェアです。)このヒント(9833)は、Microsoft Word 2007、2010、2013、2016、2019、およびOffice 365のWordに適用されます。このヒントのバージョンは、ここにWordの古いメニューインターフェイス: