1. はじめに
「ドキュメンテーション? Editor使ってMarkdownで書くよ!」という人は、
端からこんな記事読まないはず。
資料はすべてExcelで作るのがルール、というウチのような職場にお勤めの方に、
もしかしたらちょっと役立つかもしれない、
番号を振ったり振りなおしたりする、ただそれだけのExcelマクロです。
2. 動作例
3. ソース
※参照設定: Microsoft VBScript Regular Expressions 5.5
Sub Numbering()
Dim r As New RegExp, c As Range, i As Long, v As String
r.Pattern = "^[0-9]+"
For Each c In ActiveWindow.RangeSelection.SpecialCells(xlCellTypeConstants)
i = i + 1
v = c.Value
c.Value = IIf(r.Test(v), r.Replace(v, i), i & "." & v)
Next
End Sub
4. 解説
……するほどのものでもないですが、
選択範囲をSelection
とせずにActiveWindow.RangeSelection
としたのは、
図形とかを選択していた時のエラーを避けたかったから。
(インテリセンスを効かせたかったというのもある。)
そのくせ、選択範囲に何もないと実行時エラーになることには目を瞑るダブスタぶり。
ほかにも、数字以外(ABC、アイウ、①②③)や多階層(1-1-1.)への対応など、
色々とあるんですが、やめときます。(ちょっとした、の域を超えそうなので。)