エクセルで、マクロは削除した後に、このファイルを開こうとすると、メッセージが表示され「開こうとしたファイルにはマクロが設定されています」と出てくる場合があります。
マクロを削除したのに、なぜ?
こんな疑問をもったことはありませんか?
このメッセージを表示させないようにする方法について説明します。
まず、編集するファイルを開いてください。
「ツール」から「マクロ」→「Visual Vasic Editor」を選んでVBAエディタを表示させます。
(ALT+F11でも同じです)
このエディタ画面左側から「標準モジュール」をクリックすると、「Module1」という名前のマクロのが表示されます。
この「Module1」という標準モジュールが、前回記録したマクロの中身なので、これが削除されていなければ、マクロが設定されていることになるので、ファイルを開いたときにそのようにメッセージのダイアログボックスが表示されてしまうのです。
そこで、標準モジュールの左側の「+」をクリックしてください。すると標準モジュールが展開されます。
削除したいマクロ名(ここでは「Module1」)を右クリックすると、「Module1の解放」を実行することができます。
Module1の解放を選択すると、「エクスポートしますか?」と表示されますが、保存する必要がないなら、「いいえ」を選択すればOKです。
こうすると、マクロ本体が削除されるので、次からはファイルを開いたときのメッセージダイアログは表示されなくなります。
Excelでは、[Enter]キーを押したあと、次にどのセルをアクティブにするのかを変更できます。
2003までのExcelならば[オプション]ダイアログ-[編集]タブ-[入力後にセルを移動する]欄で、Excel 2007・2010ならば[Excelのオプション]ダイアログ-[詳細設定]-[編集設定]欄-[Enterキーを押した後にセルを移動する]欄で、[Enter]キーを押したあとにセルを移動するかどうか、移動するならば下・右・上・左のどの方向へ移動するのかを設定できます。
講習中に、時々、この[Enter]キーを押したときの設定について、
「エクセル Enter後 移動方向 シート毎設定」
「エクセル 入力後セル移動方向 ファイル毎に」
といった質問を受けることがあります。
ワークシートごと・ブック(ファイル)ごとに、[Enter]キーを押したあとの移動方向を切り替える方法を探している方の質問です。
[Enter]キーを押した後のアクティブセルの移動方向は、アプリケーションごとに設定されるものなので、標準の機能で、シートごとやブックごとに[Enter]後に移動する方向を変えることはできません。
しかし、VBA(Visual Basic for Applications)を利用して、イベントプロシージャを作成すれば、シートごと・ブックごとに移動方向を変更したり、移動するかどうかを設定できます。
▼Enterキーを押したあと右方向にアクティブセルを移動するWorksheet_Activateイベントプロシージャ
Private Sub Worksheet_Activate()
Application.MoveAfterReturn = True
Application.MoveAfterReturnDirection = xlToRight
End Sub
まず、Application.MoveAfterReturnプロパティで、[Enter]キーを押したあとにアクティブセルを移動するかどうかを設定します。「True」なら移動する、「False」なら移動しない設定になります。
Application.MoveAfterReturnプロパティを「True」にして移動する設定にした場合、Application.MoveAfterReturnDirectionプロパティで移動方向を指定できます。
「xlDown」なら下
「xlToRight」なら右
「xlToLeft」なら左
「xlUp」なら上
となります。
それぞれのシートで、[Enter]キー後に、移動しなくなったり、移動方向が自動的に変更されることをご確認いただけるでしょう。
ファイルごとに、移動するかどうか・移動方向を設定したい場合、Workbook_Activateイベントプロシージャに同様のコードを書いておけばOKです。
>文書作成代行・DTPデータ作成サービス
>ワード・エクセル・マクロVBA・パワーポイント・アクセス企業パソコン研修
>出張パソコン教室ITスクール
>ホームページ更新サービス
>パソコンの家庭教師BEST
Excelファイルを開いたときに実行されるAuto_Openマクロに簡単なコードを書いておくだけで、ショートカットメニューを非表示にできます。
▼セルのショートカットメニューを表示しないようにするAuto_Openマクロ
Sub Auto_Open()
Application.CommandBars(“Cell”).Enabled = False
End Sub
「Application.CommandBars(“Cell”).Enabled = False」
で、マウスの右ボタンをクリックしても、[Shift]+[F10]キーを押しても、ショートカットメニューは表示されなくなります。
逆にショートカットメニューを表示されるようにするコードは
「Application.CommandBars(“Cell”).Enabled = True」
です。
Excelファイルを閉じるときに実行されるAuto_Closeマクロで、
「Application.CommandBars(“Cell”).Enabled = True」
を実行するようにしておくほうがいいでしょう。
>文書作成代行・DTPデータ作成サービス
>ワード・エクセル・マクロVBA・パワーポイント・アクセス企業パソコン研修
>出張パソコン教室ITスクール
>ホームページ更新サービス
>パソコンの家庭教師BEST
2003までのExcelならば、メニュー[表示]-[ステータスバー]や、[オプション]ダイアログ-[表示]タブ-[表示]グループ-[ステータスバー]チェックボックスで、ステータスバーの表示・非表示を切り替えられました。
ところがExcel 2007ではそれに該当するオプション設定や、コマンドが見当たりません。
そのことに起因する疑問でしょう。
Excel 2007に限らず、Office 2007ではステータスバーの表示・非表示を切り替えるコマンドはなくなっているようです。
どうしてもステータスバーを非表示にしたいという場合は、VBA(Visual Basic for Applications)を利用してください。
▼操作手順:ステータスバーを非表示にする
[Alt]キー+[F11]キーを押してVBEを起動
↓
[Ctrl]キー+[G]キーを押して[イミディエイト]ウィンドウを表示
↓
[イミディエイト]ウィンドウに
「Application.DisplayStatusBar = False」
と入力して[Enter]キーを押す
「Application.CommandBars(“Status Bar”).Visible = False」
でもステータスバーを非表示にできますが、[イミディエイト]ウィンドウを利用する場合は上記の
「Application.DisplayStatusBar = False」
のほうが簡単でしょう。
ステータスバーが非表示になっているときに表示したいときは、
「Application.DisplayStatusBar = True」
「Application.CommandBars(“Status Bar”).Visible = True」
としてください。
Excelであえてステータスバーを非表示にしたいという場合、Excelで業務用アプリを作成しているような場合でしょう。その場合、業務用アプリを開いたときに実行されるAuto_Openマクロで
「Application.DisplayStatusBar = False」や
「Application.CommandBars(“Status Bar”).Visible = False」
を実行して、ファイルを閉じるときに実行されるAuto_Closeマクロで
「Application.DisplayStatusBar = True」
「Application.CommandBars(“Status Bar”).Visible = True」
を実行してステータスバーを表示状態に戻しておくのがいいんじゃないでしょうか。
VBA(Visual Basic for Applications)で、簡単にマクロを作成することができます。
▼すべてのオートフィルタを一括解除するマクロ
Sub RemoveFiltersAllWorksheets()
Dim objWorkSheet As Worksheet
For Each objWorkSheet In Worksheets
objWorkSheet.AutoFilterMode = False
Next
End Sub
AutoFilterModeプロパティをFalseにしてやれば、オートフィルタは解除できますから、すべてのワークシートに対して、AutoFilterModeプロパティをFalseにする処理を行ってやれば、オートフィルタを一括解除するマクロになります。
上記のマクロではFor Each Nextループの中で、AutoFilterModeプロパティをFalseにしています。
For Each Nextループの中でワークシートに対して何らかの処理を行うのは、Excelマクロの基本技ともいっていいものですので、標準で用意されていないような、すべてのシートに対する処理を行う機会が多いという方は、是非マスターされることをおすすめします。

