wordの表の左端に連番を入力するword VBA
2020年12月02日
ワードマクロ消えちゃったよ企画の第二弾。
Wordの表はExcelと違って一気に番号を入れるのがやりづらい。
リストスタイルで番号を付けることもできるけど、
連番の列って幅が狭いので、表が崩れたり、通番が狂ったりするのが怖いので
自動的に通番をふるマクロを作った。
イメージこんな感じ。
苦労の末、セルの結合してても動く仕様に。
Excelでは、結合されたセルへのアクセスは問題なかったけど、
wordの場合は左上以外のセルは存在しないことになっているようで
アクセスするだけでエラーを吐く。
なので、UI操作をベースにwordの空気を読む力を最大限に利用して作った。
Wordの表はExcelと違って一気に番号を入れるのがやりづらい。
リストスタイルで番号を付けることもできるけど、
連番の列って幅が狭いので、表が崩れたり、通番が狂ったりするのが怖いので
自動的に通番をふるマクロを作った。
イメージこんな感じ。
苦労の末、セルの結合してても動く仕様に。
Excelでは、結合されたセルへのアクセスは問題なかったけど、
wordの場合は左上以外のセルは存在しないことになっているようで
アクセスするだけでエラーを吐く。
なので、UI操作をベースにwordの空気を読む力を最大限に利用して作った。
- 表の外側なら中止
- 表の内側なら左上のセルを選択
- Tabボタンで遷移をしながら1列目にきたらカウンタを入力してインクリ
- 表の外に出たら終了
Sub 表の左端に通番を振るv10r00()
If Selection.Information(wdWithInTable) = False Then
MsgBox "表内にカーソルを置いてから実行してください。"
Exit Sub
End If
Dim n As Long: n = 1
Dim objTableCell As Object
Set objTableCell = Selection.Tables(1).Cell(1, 1)
Do '-- Loop Until objTableCell Is Nothing
If objTableCell.ColumnIndex = 1 Then
If objTableCell.RowIndex <> 1 Then
objTableCell.Range.Text = n
n = n + 1
End If
End If
Set objTableCell = objTableCell.Next '次のセルへ(tabと同様)
Loop Until objTableCell Is Nothing '------------------------------
' objTableCell.Range.Text = objTableCell.RowIndex & "-" &objTableCell.ColumnIndex
End Sub
PR
Comment