コラム

半角スペースが削除できない問題

ワードVBAで半角の丸カッコ「(」の前にある半角スペースが削除できない事象について、まとめておきたいと思います。

事象

VBAで次のコードを実行すれば、最初の段落の最初の1文字を削除できるはずです。

Sub DeleteSpace()
With ThisDocument.Paragraphs(1).Range
    .Characters.First.Delete
End With
End Sub

しかし、このコードを実行しても、次のように半角の丸カッコ「(」の前に半角のスペースがある場合には、削除できません(半角のスペースが必ず残ります)。

確認してみると、実は、手作業でも同じ事象が発生していました。

次のようにスペースを選択してからDeleteキーを押すと、削除することができません。(通常は、わざわざ選択してから削除しないので、気づいていなかったようです。)

さらに次のことが分かりました。

  • 「(」の前の文字をすべて削除すると、自動的に半角のスペースが挿入される。(このため、「(」の前の文字をすべて削除する場合は、必ずこの問題が生じる。)
  • 「[」でも同様の事象が発生する。(全角の「(」や半角の「)」では発生しない。)

原因

不明です。

オートコレクトが怪しいのですが、どのオプションが影響しているのかは分かりませんでした。

対策

左右どちらかの矢印キーを押して、選択を解除した状態にしてからDeleteまたはBackSpaceキーを押すと削除できます。

VBAでは、次のコードで実現できます。

Sub DeleteSpace()
With ThisDocument.Paragraphs(1).Range
    .Characters.First.Select
    With Selection
       .MoveRight      'または.MoveLeft
       .TypeBackspace        'または.Delete
    End With
End With
End Sub

ワードは、エクセルに比べて、このようにマクロが思っていたように動かない場合が多い気がします。一つ一つ潰してゆくしかなさそうです。

コメント

タイトルとURLをコピーしました