Home » エクセルマクロ・Excel VBAの使い方 » イベントプロシージャ » 直前に操作していたシートに戻るショートカットキーは?

直前に操作していたシートに戻るショートカットキーは?

対象:Excel2002, Excel2003, Excel2007

複数のシートを頻繁に切り替えて操作しているような方から、
「直前に操作していたシートに戻るショートカットキーってないんでしょうか?」
といったご質問をいただくことがあります。

シートの切り替えは、シート見出しをクリックして行いますが、シート見出しをクリックする操作を何度も面倒です。そのためこのようなご質問をいただくことになります。

そのような機能は標準では用意されていませんが、VBA(Visual Basic for Applications)を利用してマクロを作成してやれば、もちろん実現可能です。

[スポンサードリンク]

グローバル変数に直前に操作していたシート名を保持するようにしておいて、そのシートに戻るマクロをショートカットキーで呼べるようにすればOKです。


▼直前に操作していたシートに戻るマクロとグローバル変数の宣言
Public gstrLastSheet As String

Sub GotoLastSheet()

 If gstrLastSheet <> "" Then Sheets(gstrLastSheet).Activate

End Sub

直前に操作していたシート名をどのタイミングで保持させるかがポイントで、シート名を保持するタイミングなどから、シート名保持用の変数「gstrLastSheet」をPublic宣言をして「Public gstrLastSheet As String」グローバル変数にしています。

実際に直前のシートに戻る処理をする「GotoLastSheet」マクロ自体は簡単です。

グローバル変数gstrLastSheetが空でなかったら、「If gstrLastSheet <> "" Then」そのグローバル変数に保持されている直前に操作していたシートをアクティブに「Sheets(gstrLastSheet).Activate」しているだけです。

ポイントのグローバル変数gstrLastSheetに、いつどうやってシート名を保持させるかですが、わかってしまえば決して難しくありません。

シートがアクティブでなくなるときには、SheetDeactivateイベントが発生します。

ですから、Workbook_SheetDeactivateイベントプロシージャでgstrLastSheetにシート名を保持させてやればOKなのです。


▼操作していたシート名をグローバル変数に保持するWorkbook_SheetDeactivateイベントプロシージャ
Private Sub Workbook_SheetDeactivate(ByVal Sh As Object)

 gstrLastSheet = Sh.Name

End Sub

以上で実際に動作する部分は完成です。

GotoLastSheetマクロを実行すれば、直前に操作していたシートがアクティブになります。

ただせっかく作ったGotoLastSheetマクロを実行するのが面倒だと意味がありません。

そこで、ショートカットキーでGotoLastSheetを呼べるようにします。

定番技のWorkbook_Openイベントプロシージャで、先GotoLastSheetマクロにショートカットキーを割り当てます。


▼GotoLastSheetマクロにショートカットキー[Ctrl]+[Shift]+[BackSpace]を割り当てるWorkbook_Openイベントプロシージャ
Private Sub Workbook_Open()

 Application.OnKey "+^{BACKSPACE}", "GotoLastSheet"

End Sub

Excelには、アクティブセルを表示する[Ctrl]+[BackSpace]というショートカットキーがあります。これに近いイメージでここでは[Ctrl]+[Shift]+[BackSpace]キーに割り当ててました。

他にわかりやすいと感じられるショートカットキーがあれば、そちらに割り当てていたたいて勿論OKです。

▼サンプルファイル(003515.xls 54KByte)ダウンロード

サンプルファイルでは上記の一連のプロシージャが作成してあります。マクロを有効にしてご確認ください。

関連語句
Keyboard shortcuts, キーボードショートカット, macro, event procedure
[スポンサードリンク]

Home » エクセルマクロ・Excel VBAの使い方 » イベントプロシージャ » 直前に操作していたシートに戻るショートカットキーは?

TrackBack:0

TrackBack URL

Home » エクセルマクロ・Excel VBAの使い方 » イベントプロシージャ » 直前に操作していたシートに戻るショートカットキーは?

「イベントプロシージャ」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.