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