当サイトの記事にはプロモーションが含まれています。

Word VBAでカーソル位置の段落番号を取得する方法

パソコンパソコン・スマホ教室
スポンサーリンク

Word文書で段落番号を自動的に付ける機能は便利ですが、VBA(マクロ)を使ってカーソル位置の段落番号を取得する方法をご存じでしょうか?特に、段落番号が自動で更新される場合など、手動で確認するのが難しい場面で役立ちます。今回は、初心者の方でもわかりやすいように、実際のコード例とともに解説します。

スポンサーリンク

カーソル位置の段落番号を取得する基本的な方法

Wordのイメージ

Wordのイメージ

まず、最も基本的な方法からご紹介します。以下のVBAコードを使うと、カーソルがある段落の番号を取得できます。

Sub GetParagraphNumber()
Dim paraNum As Integer
paraNum = Selection.Range.Paragraphs.Count
MsgBox "カーソル位置の段落番号は: " & paraNum
End Sub

このコードでは、カーソル位置を含む範囲の段落数をカウントしています。カーソルが文書の先頭にある場合でも、正しい段落番号が表示されます。

カーソルが段落の先頭にある場合の注意点と対策

ただし、カーソルが段落の先頭にある場合、上記の方法では直前の段落番号が取得されてしまうことがあります。これを防ぐためには、カーソルの直前が改行(vbCr)であるかを確認し、必要に応じて補正を加える必要があります。

Sub GetCorrectParagraphNumber()
Dim paraNum As Integer
If Selection.Characters.First.Previous = vbCr Then
paraNum = Selection.Range.Paragraphs.Count + 1
Else
paraNum = Selection.Range.Paragraphs.Count
End If
MsgBox "カーソル位置の段落番号は: " & paraNum
End Sub

このコードでは、カーソルの直前が改行であるかを確認し、改行があれば段落番号を1つ増やしています。

セクション区切りを考慮した段落番号の取得方法

文書にセクション区切りが含まれている場合、セクションごとに段落番号がリセットされることがあります。セクションごとの段落番号を取得するには、以下のようにセクションごとに段落数をカウントする方法があります。

Sub GetParagraphNumberBySection()
Dim i As Integer
Dim paraNum As Integer
For i = 1 To ActiveDocument.Sections.Count
paraNum = ActiveDocument.Range(0, ActiveDocument.Sections(i).Range.End).Paragraphs.Count
MsgBox "セクション " & i & " の段落番号は: " & paraNum
Next i
End Sub

このコードでは、各セクションの終了位置までの段落数をカウントし、セクションごとの段落番号を取得しています。

ListNumフィールドを考慮した段落番号の取得方法

文書内にListNumフィールドが使用されている場合、段落番号を取得するにはListFormatオブジェクトを利用する方法があります。

Sub GetListNumParagraphNumber()
Dim paraNum As String
paraNum = Selection.Range.ListFormat.ListString
MsgBox "カーソル位置のListNumフィールドの段落番号は: " & paraNum
End Sub

このコードでは、カーソル位置のListNumフィールドの段落番号を取得しています。

よくある質問

Q1: VBAで段落番号を取得する際、ListNumフィールドが含まれている場合の対処方法はありますか?

はい、ListNumフィールドを考慮する場合、ListFormatオブジェクトのListStringプロパティを使用して段落番号を取得できます。上記の「ListNumフィールドを考慮した段落番号の取得方法」のセクションをご参照ください。

Q2: セクション区切りをまたいで段落番号を取得する方法はありますか?

セクションごとの段落番号を取得するには、各セクションの終了位置までの段落数をカウントする方法があります。上記の「セクション区切りを考慮した段落番号の取得方法」のセクションをご参照ください。

Q3: VBAでカーソル位置の段落番号を取得する際、改行コード(vbCr)を考慮する必要がありますか?

はい、カーソルの直前が改行コードである場合、段落番号が正しく取得できないことがあります。改行コードを考慮し、必要に応じて補正を加えることをおすすめします。上記の「カーソルが段落の先頭にある場合の注意点と対策」のセクションをご参照ください。

まとめ

Word VBAを使用すると、カーソル位置の段落番号を簡単に取得できます。セクション区切りやListNumフィールドなど、文書の構造に応じて適切な方法を選択することが重要です。上記のコード例を参考に、自分の文書に合わせたマクロを作成してみてください。

他にも疑問やお悩み事があればお気軽にLINEからお声掛けください。

この記事を書いた人
この記事を書いた人

企業の情報システム部門で10年以上、PC・アカウント・社内ネットワーク・Microsoft 365/Google Workspace運用を担当。年間数百件の問い合わせ対応(PC不調、メール送受信、Excel/Word資料、Teams会議、スマホ連携など)を通じて、初心者がつまずくポイントを「再現→原因切り分け→最短解決」の手順に落とし込んできました

現場や身近で実際に起きたトラブルをベースに、手順だけでなく「なぜそうなるか」「失敗しやすい落とし穴」「安全な設定(セキュリティ)」まで含めて解説します。

相談窓口(問い合わせ/LINE等)を設け、記事で解決しないケースも個別にサポートしていますので「パソコンが急に動かなくなった」「スマホの設定がわからない」などの悩みは一人で抱え込まず、お気軽にご相談ください。

【お問い合わせは下記URLから】
https://m32006400n.xsrv.jp/inquiry-form/

【公式LINEは下記URLから】
https://lin.ee/t8TDjcj

uri uriをフォローする
スポンサーリンク
よかったらシェアしてね! /
uri uriをフォローする

コメント

タイトルとURLをコピーしました