ワークシートの名前を変更するにはどうしたらいいでしょう。え?簡単ですって?なるほど、次のようにWorksheetオブジェクトのNameプロパティに変更したい名前を指定すればいいんですね。
Sub Sample1()
    ActiveSheet.Name = "合計"
End Sub
はい、確かにその通りです。ですが、今回のテーマはちょっと違います。
たとえばExcelで入力作業をしていたとします。そんなとき、シートの名前を変更したくなったらどうしますか?普通はシート見出しをダブルクリックして、新しいシート名を入力します。でも、入力作業を続けているときって、両手がキーボード上にありますよね。できればマウスを使わずに、キーボードだけで新しい名前に変更したいものです。それもInputBoxなんか使わないで、シート見出し上で直接入力したいです。
マクロを使わない方法もあります。
[Alt]キーを押しながら[O]キーを押して[書式]メニューを開きます。そのまま[H]→[R]と押して、[シート]-[名前の変更]を実行すれば、アクティブシートのシート見出しが編集可能になります。この操作をマクロで実行すれば、シート見出しの名前を直接編集できそうです。
キーが押されたことにするには、SendKeysステートメントを使います。SendKeysに続けて、押したことにしたいキーを指定すれば、そのキーが押されたものとみなしてくれます。ちょっと表現がややこしいですね。たとえば次のコードは、アクティブセルにtanakaと入力します。マクロは、ワークシート上から実行してください。VBEから実行するとVBEのコードペインに入力されちゃいますから。
Sub Sample2()
    SendKeys "tanaka"
    SendKeys "{Enter}"
End Sub
{Enter}はEnterキーを表します。こうした特殊なキーは次のように指定します。以下、ヘルプから抜粋です。
| キー | コード | 
|---|---|
| BackSpace | {BACKSPACE}、{BS}、または {BKSP} | 
| Ctrl + Break | {BREAK} | 
| CapsLock | {CAPSLOCK} | 
| Del または Delete | {DELETE} または {DEL} | 
| ↓ | {DOWN} | 
| End | {END} | 
| Enter | {ENTER}または {~} | 
| Esc | {ESC} | 
| Help | {HELP} | 
| Home | {HOME} | 
| Ins または Insert | {INSERT} または {INS} | 
| ← | {LEFT} | 
| NumLock | {NUMLOCK} | 
| PageDown | {PGDN} | 
| PageUp | {PGUP} | 
| PrintScreen | {PRTSC} | 
| → | {RIGHT} | 
| ScrollLock | {SCROLLLOCK} | 
| Tab | {TAB} | 
| ↑ | {UP} | 
| F1~F16 | {F1}~{F16} | 
また、ShiftキーやAltキーなどが押された状態は次のように表します。
| キー | コード | 
|---|---|
| Shift | + | 
| Ctrl | ^ | 
| Alt | % | 
Shiftキーを押しながら上矢印キーを押す操作は「"+{UP}"」、Ctrl+Shift+PageUpなら「"^+{PGUP}"」です。
では、このSendKeysステートメントを使って、さっきのキー操作を表してみましょう。
Sub Sample3()
    SendKeys "%OHR"
End Sub
このマクロを、セルの右クリックで表示されるショートカットメニューの一番上に登録しておきます。ショートカットメニューにマクロを登録する方法は「セルの右クリックメニューに独自のコマンドを追加する」をご覧ください。シート名を変更したいときは、アプリケーションキーまたはShift+F10を押してメニューを開きます。メニューが開いた最初はどのコマンドも選択されていませんから、一度下矢印キーを押してからEnterキーを押します。ちなみに、アプリケーションキーとは下図のキーです。
