マクロの中身を確認する
記録したマクロのどこが誤りだったのか、また、マクロの記述を正しいコードに書き換えるため、VBエディタを起動してみましょう。
- [ツール]メニューの[マクロ]から[マクロ]を選択し、[マクロ]ダイアログボックスを表示する。
▼ 図04-01 [マクロ]ダイアログボックスの表示
【Excel2007の場合】
Excel2007ではメニューバーではなく、リボンを使用します。[開発]タブが表示されている場合には、[マクロ]ボタンをクリックすると表示できます。
▼ 図04-02 Excel2007での[マクロ]ダイアログボックスの表示 - [マクロ名]ボックスから編集したいマクロ[時給一覧プレビュー]を選択する。
- [編集]ボタンをクリックし、VBエディタを起動する。
▼ 図04-03 [マクロ]ダイアログボックス
VBエディタが起動しました。Subの後ろに続く記述がマクロ名です。
Aの操作 | “時給一覧”シートを再表示する |
Bの操作 | 現在選択されているシートを印刷プレビュー表示する |
Cの操作 | 現在選択されているシートを非表示にする |
「Sheets("時給一覧")」は“時給一覧”シート。「ActiveWindow.SelectedSheets」は選択されているシートという意味です。 “時給一覧プレビュー”マクロを実行した際、イメージ通りに動作されるかを確認してみましょう。
ステップイン機能で確認する
エラーの原因がわからないときなどはマクロをステップイン機能で実行すると、1ステートメントずつ画面を確認しながら実行できます。
ウィンドウサイズを調整し、Excelシートを表示しながら“時給一覧プレビュー”マクロをステップイン実行してみましょう。
- VBエディタのウィンドウサイズを調整する
▼ 図04-05 ExcelシートとVBエディタのウィンドウサイズを調整
- VBエディタの[デバッグ]メニューから[ステップイン]を選択する。
▼ 図04-06 ステップインを実行
- マクロ名部分が黄色で反転表示されたことを確認し、続いて[F8]キーを2回押す。
※ [F8]キーはステップインのショートカットキーです。 - 2つ目のステータスが反転表示したらExcelシートを確認し、“時給一覧”シートが再表示されたが、アクティブシートは“アルバイト名簿”シートのままになっていることを確認する。
▼ 図04-07 “アルバイト名簿”シートがアクティブなまま
- 続けて、[F8]キーを押すと“アルバイト名簿”シートが印刷プレビュー表示される。
- 印刷プレビューを閉じ、VBエディタが再度表示されたら[F8]キーを押す。
- “アルバイト名簿”シートが非表示になる。
▼ 図04-08 ステップイン実行で最後までマクロを実行した結果
マクロの操作で正しく動作しなかった理由は、選択されているシートが操作されたためです。マクロ記録した際は、“時給一覧”シートを再表示すると“時給一覧”シートが選択された状態になるため、イメージした通りの操作ができましたが、マクロによって“時給一覧”シートを再表示すると、もともと選択されていた“アルバイト名簿”シートからアクティブシートは切り替わらないので、正しく動作されませんでした。
- [リセット]ボタンをクリックする。
※ マクロが中断した状態なので、リセットをしておきます。▼ 図04-09 [リセット]ボタン
マクロを修正する
では、“時給一覧”シートが正しく選択されるようにマクロの書き換えを行いましょう。 「ActiveWindow.SelectedSheets」と記述するのではなく、「Sheets("時給一覧")」というようにシートを指定します。
- Bの「ActiveWindow.SelectedSheets」を「Sheets("時給一覧")」に変更する。
- 同様に、Cの「ActiveWindow.SelectedSheets」を「Sheets("時給一覧")」に変更する。
▼ 図04-10 マクロを修正する
これでマクロは正しく動作されます。
今回は、マクロの記録だけでは正しく動作しない場合の対処法について学びました。VBAの知識を身に付けることで、マクロを思い通りに修正できるようになります。少しずつ理解を深め、さまざまなシーンで活用してみましょう。