ワークシートの名前を変更するにはどうしたらいいでしょう。え?簡単ですって?なるほど、次のように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キーを押しながら上矢印キーを押す操作は「"+{UP}"」、Ctrl+Shift+PageUpなら「"^+{PGUP}"」です。
では、このSendKeysステートメントを使って、さっきのキー操作を表してみましょう。
Sub Sample3()
SendKeys "%OHR"
End Sub
このマクロを、セルの右クリックで表示されるショートカットメニューの一番上に登録しておきます。ショートカットメニューにマクロを登録する方法は
「セルの右クリックメニューに独自のコマンドを追加する」をご覧ください。シート名を変更したいときは、アプリケーションキーまたはShift+F10を押してメニューを開きます。メニューが開いた最初はどのコマンドも選択されていませんから、一度下矢印キーを押してからEnterキーを押します。ちなみに、アプリケーションキーとは下図のキーです。