【Word VBA】カーソル位置の文字の先頭文字の大・小文字を切り替えるWordマクロ

2010年12月2日

翻訳をしていない方には、何のために使うのか全く理解できないかもしれません。

または、翻訳者であっても、水野麻子さんが開発したCTのユーザーでないと、用途を理解できないかもしれません。

このマクロでできること

簡単にいうと、

word

Word

に書き換えてくれるというマクロです。逆もまたしかり。

英文を作成すると、文頭の文字は大文字にしますから、そのための書き換えです。

CTでは、最初に名詞を入力してしまいますから、単語の先頭はすべて小文字が基本です。

その単語が文頭になったときに、さっと書き換えます。

マクロの説明

カーソル部分がちらつかないように、Rangeオブジェクトを使いました。

これを使うと、カーソル移動がなくなりますので、見た目が美しい。

このプログラムは、わざわざ先頭一文字だけを選択して(8行)、「大文字」「小文字」に切り替えています(10行~14行)が、別のやり方もあると思います。

実は、Word のショートカットにデフォルトで登録されている標準機能でこれに似たことができます。

これは、別の記事 で紹介します。

マクロ(1)


Sub Case_Change_Word()

 Dim myRange As Range
 
 Set myRange = Selection.Range
 
 myRange.Expand unit:=wdWord
 myRange.End = myRange.Start + 1
 
 If myRange.Case = wdUpperCase Then
  myRange.Case = wdLowerCase
 ElseIf myRange.Case = wdLowerCase Then
  myRange.Case = wdUpperCase
 End If

End Sub

マクロ(2)

上記と同じ動作をしますが、別の書き方です。

プログラムの解説は、「カーソル位置の文頭文字の大・小文字の切り替えマクロ 」をご覧ください。


Sub Case_Change_Word()

 '単語先頭の文字の大文字・小文字変換
 
 Dim myRange As Range
 
 Set myRange = Selection.Range
 myRange.Expand unit:=wdWord
 
 With myRange.Characters.First
  If .Case = wdUpperCase Then
   .Case = wdLowerCase
  ElseIf .Case = wdLowerCase Then
   .Case = wdUpperCase
  End If
 End With

End Sub

-コード
-,