【Word VBA】最終段落にカーソルを移動するWordマクロ

2017年2月23日

文書の最終段落を見つけて選択するマクロです。

文書の最終段落には特定の情報が含まれていることがあります。

なので、内容を確認するためにその段落にカーソルを移動します。

このマクロでできること

現在の文書の最終段落にカーソルを移動します。

最終段落というのは、文字列が書かれている段落を意味します。

そのため、空の段落やタブ記号のみの段落、全角や半角のスペースだけが書かれた段落は除外します。

(実行前)

最終段落

(実行後)

最終段落

 

マクロの解説

表内の改行記号がくせ者です。

表内のセルの改行記号は以下のように表示します。

Chr(13) & Chr(7)

なので、表内で判定が止まらないようにChr(7)も除外対象にしています。

厳密に判定する場合には、段区切り記号 Chr(10) やソフトリターン Chr(11) や改ページ記号 Chr(12) なども除外文字に入れましょう。

マクロ


Sub 最終段落を見つけるマクロ()

 Dim myRange As Range
 Dim myText As String
 Dim myChr(5) As String
 Dim i As Integer

 '-------------------------------------------
 '不要な文字列の設定
 '-------------------------------------------
 myChr(1) = Chr(13) '改行記号
 myChr(2) = Chr(9) 'タブ
 myChr(3) = Chr(7) '表内の改行記号
 myChr(4) = Chr(32) '半角スペース
 myChr(5) = Chr(-32448) '全角スペース

 '-------------------------------------------
 '文書の最終段落をmyRangeに設定
 '-------------------------------------------
 With ActiveDocument
  Set myRange = .Paragraphs(.Paragraphs.Count).Range
 End With
 
 Do
  '-------------------------------------------
  '編集記号を除外
  '-------------------------------------------
  myText = myRange.Text
  
  For i = 1 To 5
   myText = Replace(myText, myChr(i), "")
  Next i
  
  '-------------------------------------------
  '編集記号以外の文字列の判定
  '-------------------------------------------
  If Len(myText) <> 0 Then
   myRange.Select
   Exit Do
  Else
   '現在の段落の直前の段落をmyRangeに設定
   Set myRange = myRange.Paragraphs(1).Previous.Range
  End If

 Loop

 Set myRange = Nothing

End Sub

-コード
-,