以前ご紹介した「日英特許明細書の段落番号を探すマクロ
」ですが、マクロ勉強会にご参加されている方から、改良提案をいただきました。
それをヒントにして作ったマクロです。
▼このマクロでできること
記事のタイトルのとおり、日英特許明細書の段落番号を探すのですが、一工夫あります。
検索した段落をページの一番上に表示するというすぐれもの!
どういうことか?というと、以下のように比較してみるとわかりやすいですね。
段落番号の【0002】を探した場合です。
画面に、【0001】から【0003】が表示された状態で【0002】を探すと、前回のバージョンでは、以下の | のように、画面の中央にカーソルが移動します。
(前回のバージョン)
ところが、今回のバージョンでは画面が自動でずれて、【0002】が画面の一番上に表示されます。
(今回のバージョン)
対象となる段落をより多く見ることができるし、スクロールする必要もなくなりますから、うれしい機能ですね。
こういうちょっとした心遣いっていいですね。
▼マクロの解説
段落番号を見つけた場合、そのままカーソルを移動させるのではなく、一度文書の本文の一番下までカーソルを移動させてから目的の段落番号に移動させます。
青文字部分で、カーソルを本文の末尾にまで移動させています。
すると、画面の一番上の行に目的とする段落番号が現れます。
▼マクロ
Sub 段落番号へジャンプ_改良版()
'段落番号(4桁数字)へのジャンプ
Dim myNumber As Variant '段落番号の入力
Dim myPara As String '4桁の段落番号
Dim myMessage As String 'メッセージ
Dim myTitle As String 'タイトル
Dim myRange As Range 'Rangeオブジェクト
myMessage = "段落番号を入力して下さい。" & vbCr _
& "(半角・全角どちらでも可)"
myTitle = "段落番号へジャンプ"
Do
myNumber = InputBox(myMessage, myTitle)
If myNumber = vbNullString Then End
Loop While IsNumeric(myNumber) = False Or _
myNumber < 1 Or _
myNumber > 9999
myPara = Format(myNumber, "0000")
Set myRange = ActiveDocument.Range(0, 0)
With myRange.Find
.Text = myPara
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchWholeWord = True
.MatchByte = False
.Execute
End With
If myRange.Find.Found = True Then
Selection.EndKey Unit:=wdStory
myRange.Select
Selection.Collapse direction:=wdCollapseEnd
Else
MsgBox "段落番号:" & myPara & " は見つかりませんでした。", _
vbInformation, "検索結果のお知らせ"
End If
End Sub
▼関連記事
日英特許明細書の段落番号を探すマクロ
段落番号をフィールドで入力(日本語)
段落番号をフィールドで入力(英語)
マクロコードの登録方法
ツールバーのボタン登録