ワークシートの名前を変更するにはどうしたらいいでしょう。え?簡単ですって?なるほど、次のように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キーを押します。ちなみに、アプリケーションキーとは下図のキーです。
