【Word VBA】カーソルの直前に項目番号を入力するWordマクロ

2016年10月4日

今メルマガを書いています。

項目の番号を入力するのが面倒だと思い、マクロを作ってみました。

けっこう便利なので記事にしました。

このマクロでできること

カーソル位置の直前に半角括弧で囲んだ数字と半角スペース1つを入力します。

(実行前)

項目番号入力

番号を指定します。今回の場合は、直前が「4」の次なので「5」と入力します。

項目番号入力

(実行後)

項目番号入力

マクロの解説

記事「【コード】条番号にジャンプする」のコードの前半部分にあるInpubBox関数を用いて番号を入力する箇所を借用しています。

番号を入力して、その番号をもとに挿入する文字列を作っています。

今回のマクロでは、全角で入力した場合でも半角数字にして挿入しています。この変換で、StrConv関数を用いています。(24行目)

カーソル位置(選択範囲)の直前に文字列を挿入したいので、InsertBeforeメソッドを使っています。(27行目)

文字を入力するだけだと、入力した文字が選択されたままの状態になります。

項目番号入力

これを回避するために、28行目のように、Collapaseメソッドで選択範囲の末尾側に選択を解除しています。

マクロ


Sub 半角数字の番号入力()

 Dim myNumber As Variant '条番号の入力
 Dim myMessage As String 'メッセージ
 Dim myTitle As String  'タイトル
 Dim myText As String
 
 '-------------------------------------------
 '番号の入力
 '-------------------------------------------
 myMessage = "番号を入力して下さい。" & vbCr _
             & "(半角・全角どちらでも可)"
 myTitle = "項目番号の入力"

 Do
   myNumber = InputBox(myMessage, myTitle)
   If myNumber = vbNullString Then End
 Loop While IsNumeric(myNumber) = False Or _
       myNumber < 1

 '-------------------------------------------
 'カーソル位置の直前へ文字列の挿入
 '-------------------------------------------
 myText = "[" & StrConv(myNumber, vbNarrow) & "] "
 
 With Selection
  .InsertBefore myText
  .Collapse wdCollapseEnd
 End With
 
End Sub

-コード
-,