個人用マクロの割り当てがうまくいかない

Mac上でWindowsを動かしてExcelで作業していると、Windowsで使えていたショートカットが使えず不便を感じることがあります。個人的に書いたマクロをショートカットにして使おうとしましたがうまくいきませんでした。

スポンサーリンク

「Shift+ctr+→」のショートカットが見つからない

私がエクセルで作業するのは会計や財務などの大量の数値データを扱う時です。そこでよく使うのがデータが入力されている最後のセルまで一気に範囲指定してくれる「Shift+ctr+矢印キー」のショートカット。Macでもこれを使いたくて何度も探したのですが見つからず、自分でマクロを書いてそれをショートカットキーに割り当てることにしました。コード自体は極めて簡単なので時間はかかりません。最初からこうしておけば良かったと後悔しました。ショートカットキーとして矢印キーは指定できませんが「Shift+ctr+関連する英字キー」と言う組み合わせで違和感のない割り当てができました。実際に動かしてみると問題なく動きます。安心しました。

別シートで使うとエラーが発生した

一つのシートでの作業が完了したため、他のシートでの作業に移ります。そこでも同じように「Shift+ctr+関連する英字キー」のショートカットを使いました。ところが、

エラーメッセージ

困りました。なぜかエラーが出てきてしまいます。しかも400以外の説明がありません。それでもこれがヒントと思い気合いで調べます。まず、マクロ自体にもショートカットキーの割り当てにも問題はないことは確認しました。問題となったのはシートを変えると使えなくなったと言うことです。個別のシートでしか有効にならない設定でショートカットを作ったことが原因ではないかと推測します。その観点から調べていくことにします。

原因はコードを書いた場所

調査していくと最初の推測は正しかったようでこの400というエラーはシートやセルの指定が誤りの時に出てくるエラーのようです。今回のケースは明らかにシートの指定の仕方がおかしいと言うことだと考えて再度コードを書いたマクロを表示してみると

スクリーンショット 2014 06 09 8 46 53

コードを書いたモジュール名にsheet5を指定していることを示す記述があります。振り返ってみるとコードを書くためにVBEを開き、モジュールを指定しないままにコードを書いていました。その時に開いていたのがsheet5のモジュールだったようです。

標準モジュールにコードを書き直して解決

ということで標準モジュールにして同じコードを書いてショートカットを割り当てます。

スクリーンショット 2014 06 09 9 01 38

今度はsheetの指定もなくマクロ名だけになっています。
これで実際に使ってみると…。大丈夫です、どのシートでもきちんと動いてくれました。

まとめ

はじめはMacだから起こるエラーだと思っていたらマクロの理解不足から起こったものでした。まだまだ、未熟。今回も良い勉強になりました。
<おまけ>
私にマクロを教えてくれた先生が「エクセルでうまくいかないときはエラーメッセージの内容を理解しなさい。分かるところだけでいいからヘルプを読みなさい」とおっしゃっていましたが今回もエラーメッセージが解決のきっかけでした。良い先生に習うことは大事ですね。

タイトルとURLをコピーしました