字下げインデントを解除できない?(Word)

字下げインデントを解除できない?

実に不可思議な現象に出くわしたのでメモ。

なお、未解決である。

字下げインデントを解除する方法

段落の字下げインデントを司っているのは、ParagraphFormatオブジェクトのFirstLineIndentプロパティ。

理屈の上では、コイツの値を0にしてやれば、字下げインデントなしの状態にできるはずである。

そこで、カーソルのある段落の字下げインデントを解除するためのコードは次のようになる。

リスト1
Public Sub OffFirstLineIndent()
  Selection.ParagraphFormat.FirstLineIndent = 0
End Sub

これで万全のはずである。

一点の曇りもない。

いざ、実行!

満を持して、実際のドキュメントで試してみる。

f:id:akashi_keirin:20220102192438g:plain

いかがであろうか。

1段落目(「ビデオを使うと、」で始まる段落)では無反応なのに、2段落目(「Word に用意されている」で始まる段落)では、意図どおり字下げが解除されている。

おい、誰やねん。

プログラムは書いたとおりに動く!

とかほざいたやつは。

1段落目と2段落目の違い

実は、1段落目と2段落目は、字下げインデントの指定の仕方がちょっとだけ違うのである。

画像でお見せしよう。

f:id:akashi_keirin:20220102192825p:plain

f:id:akashi_keirin:20220102192827p:plain

おわかりだろうか。

1段落目が、字下げインデントの幅を「1 字」と文字数単位で指定しているのに対し、2段落目では「3.7 mm」とミリ単位で指定しているのである。(「3.7 mm」は、10.5ポイントの1字分の近似値。)

結論

どうも、

字下げインデントの幅が〝字数単位〟で指定されているとき(まあ、日本語環境なら普通そうすると思いますが。)には、VBAで字下げ幅等(ぶら下げインデントにするときは、FirstLineIndentの値をマイナスにする。)を設定することができない

っぽい。

おわりに

これは、実に困ったことである。