[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『エクセルのシート間の切り替え』(AA)
少し難しい質問になります。
現在、エクセルのシート間の切り替えをショートカットキーで行おうと思い、下記のマクロを作成しました。
thisworkbookに下記マクロを記述
Private Sub Workbook_SheetDeactivate(ByVal Sh As Object)
gstrLastSheet = Sh.Name
End Sub
標準モジュールに下記マクロを記述
Public gstrLastSheet As String
Sub GotoLastSheet()
If gstrLastSheet <> "" Then Worksheets(gstrLastSheet).Activate End If End Sub
標準モジュールに記載したマクロをショートカットキー(Ctrl+mなど)に登録
これにより、シートが非アクティベイトになった際にその名前を変数に格納し、ショーカットですぐそのシートに戻れるようになります。
要は、Alt+tabキーのエクセル間バージョンという感じです。
そこで質問ですが、これを個人用マクロブックに記述し、どのエクセルでも
このショートカットが使えるようにしたいのですが、どのように記述すればいいでしょうか。
< 使用 Excel:Excel2013、使用 OS:unknown >
(AA) 2018/10/15(月) 17:15
thisworkbook に記述する
Private Sub Workbook_SheetDeactivate(ByVal Sh As Object)
gstrLastSheet = Sh.Name
End Sub
はワークブックイベントなので、個人用マクロブックに記載してもうまくいかないと思うのですが。。
(AA) 2018/10/15(月) 17:32
そうなると、確かに個人用マクロブックはアクティブなブックとは別なので、Workbook関係の命令を書いても、イベントが飛んできませんね。 難しい、とはそういう話でしたか…。 無理っぽい気がしますが、ちと考えてみます。
(???) 2018/10/15(月) 17:39
(AA) 2018/10/15(月) 17:45
まず、「オプション」−「セキュリティセンター」−「セキュリティセンターの設定」の「マクロの設定」で、「VBAプロジェクト オブジェクトモデルへのアクセスを信頼する」にチェックを入れます。 マクロウィルスでも実行できるようになるので、実験だけにするか、見知らぬブックは絶対開かないようにするか、注意してください。
次に、個人用マクロブックの標準モジュールに、以下を張り付けてから、保存しておいてください。
Sub AUTO_OPEN() Application.OnTime Now, "AddLine" End Sub
Sub AddLine() With Application.VBE.VBProjects(2).VBComponents.Item("ThisWorkbook").CodeModule .InsertLines .CountOfLines + 1, "Private Sub Workbook_SheetDeactivate(ByVal Sh As Object)" .InsertLines .CountOfLines + 1, " gstrLastSheet = Sh.Name" .InsertLines .CountOfLines + 1, "End Sub" End With End Sub
これで、ブックを開く度に ThisWorkbook に対して、上記のコードを挿入するようになります。 ただし、このままでは既にコードがあっても追記してしまうので、この方法でいくなら、既にコードがあるかどうかのチェックも必要になると思います。(更に、(2)固定の部分も、PERSONAL.XLSを探すようにすべきかも)
後は同様に、標準モジュールにも共通変数定義とマクロを書き込めば良いでしょう。 ようは、マクロを書くマクロを書いてしまえばよい、という事です。
(???) 2018/10/15(月) 18:11
↑ そこのichinoseさんの回答を参考にしてみてください。
私はここ10年間、個人用マクロブックを使ったことなく、 テスト環境としても作る気が起きないので、参考情報だけです。m(__)m
肝は、ここ ↓ Private WithEvents app As Application
(半平太) 2018/10/15(月) 20:33
>私がクラスモジュールをあまり理解していないので骨が折れそうです。。。
ちょっと分からないですが、
app(=Applicationオブジェクト)のイベントにSheetDeactivateがあるので、 それで希望のイベントが拾えるんですけど・・
いままでThisWorkbookでやってた事と同じですよ?
(半平太) 2018/10/16(火) 15:54
(AA) 2018/10/17(水) 17:05
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.