[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『ファンクションキーでシートを選択したい』(dore)
シートを頻繁に切り替えながら、作業をする必要があります。その際、片手しか使えなく、また、マウスも使いにくい状況です。
そこで、ファンクションキーのF1を押すことによりシート1が、F2でシート2、F3でシート3が選択される方法はあるでしょうか。
EXCEL2003でwindowsXPを使用しています。よろしくお願いします。
いろいろな要望があるものですね。 本来のファンクションキーは使えなくなりますし、シート数は3で固定して いますが
Sub setKeys() Application.OnKey "{F1}", "ActiveWS1" Application.OnKey "{F2}", "ActiveWS2" Application.OnKey "{F3}", "ActiveWS3" End Sub
Sub ActiveWS1() Worksheets(1).Activate End Sub
Sub ActiveWS2() Worksheets(2).Activate End Sub
Sub ActiveWS3() Worksheets(3).Activate End Sub
を実行すればできるようになるかと思います。 (Mook)
私自身が忘れがちなのでメモ代わりに・・・ シングルクォートでProcを囲むとOnKeyメソッドのProcに引数を渡す事が出来ますので参考までに。
Sub setKeys() Application.OnKey "{F1}", "'ActiveWS 1'" Application.OnKey "{F2}", "'ActiveWS 2'" Application.OnKey "{F3}", "'ActiveWS 3'" End Sub
Sub ActiveWS(i As Long) Worksheets(i).Activate End Sub
あと、慣例として必要のないタイミングで終了を
Sub delKeys() Application.OnKey "{F1}" Application.OnKey "{F2}" Application.OnKey "{F3}" End Sub
(momo)
momo さん、対策参考になりました。 上記を反映した、修正案です。
ファンクションキーでシート選択をしたいWorkbook の標準モジュールに '---------------------------------------------------- Sub setKeys() Dim i On Error Resume Next For i = 1 To 12 Application.OnKey "{F" & i & "}", "'ActiveWS " & i & "'" Next On Error GoTo 0 End Sub
'---------------------------------------------------- Sub delKeys() Dim i On Error Resume Next For i = 1 To 12 Application.OnKey "{F" & i & "}" Next On Error GoTo 0 End Sub
'---------------------------------------------------- Sub ActiveWS(i As Long) If i <= Worksheets.Count Then Worksheets(i).Activate Else MsgBox "該当シートがありません。" End If End Sub '----------------------------------------------------
ThisWorkbook モジュールに '---------------------------------------------------- Private Sub Workbook_Activate() setKeys End Sub
Private Sub Workbook_Deactivate() delKeys End Sub '---------------------------------------------------- としてどうでしょうか。
すべてのブックに処理を反映したいのであれば、 PERSONAL.xls の Workbook の Open と BeforeClose で呼ぶとよいかと思います。 (Mook)
そうですね、ループ処理が可能になりますね。 最初の For i = 1 To 12 を For i = 1 To Application.WorksheetFunction.Min(ThisWorkbook.Worksheets.Count, 12) にしておくと On Error Resume Next が必要なくなるかもしれませんね^^ (momo)
私もシートの数分と最初は思ったのですが、 シートの追加や削除を想定して上記の仕様にしました。 (Mook)
>シートの追加や削除を想定して上記の仕様にしました。 なるほど〜 良いエラートラップを教えて頂きました。
(momo)
お二人の高度なやり取りに恐れ入りました。
おかげで業務の効率が上がりそうです。
重ねて御礼申し上げます。
(dore)
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.