検索結果がどこにあるか分からない事件 ② 拡大してみる
昨日は、検索して選択したセルがどこにあるかを直感的に理解するために、選択したセルが一番左上になるようにしてみた。
infoment.hatenablog.com
しかしこれだと、任意のセルをポチポチと選ぶたび派手にスクロールしてしまい、とても使い勝手が悪い。そこでまず、この機能を切り替え式にしてみよう。
手始めとして、今までにも何度か登場した、右クリックメニューを追加・削除するクラスモジュールを準備する。
クラスモジュール(MenuControlClass)
Sub AddMenu(myCaption As String, myAction As String) Dim Newb(1) Set Newb(0) = Application.CommandBars("Cell").Controls.Add() Set Newb(1) = Application.CommandBars("List Range Popup").Controls.Add() Dim i As Long For i = 0 To 1 Newb(i).Caption = myCaption Newb(i).OnAction = myAction Newb(i).BeginGroup = False Next i End Sub Sub DelMenu() Application.CommandBars("Cell").Reset Application.CommandBars("List Range Popup").Reset End Sub
次いで、標準モジュールに、以下のサブプロシージャなどを実装する。
標準モジュール
拡大表示モード切替用変数
Public ScopeMode As Boolean
ファイル起動・終了に合わせたメニューの追加・削除
Sub Auto_Open() ScopeMode = False Call ChangeMenuMode End Sub
Sub Auto_Close() Dim MCC As MenuControlClass Set MCC = New MenuControlClass MCC.DelMenu End Sub
拡大表示モードの交互反転用
Sub ChangeScopeMode() ScopeMode = Not ScopeMode If ScopeMode = False Then ActiveSheet.UsedRange.Rows(1).Select ActiveWindow.Zoom = True If ActiveWindow.Zoom < 30 Then ActiveWindow.Zoom = 30 End If Range("A1").Select End If Call ChangeMenuMode End Sub
Sub ChangeMenuMode() Dim MCC As MenuControlClass Set MCC = New MenuControlClass MCC.DelMenu MCC.AddMenu myCaption(ScopeMode), "ChangeScopeMode" End Sub
Private Function myCaption(scope_mode As Boolean) As String Select Case scope_mode Case True myCaption = "選択拡大モード:OFF" Case False myCaption = "選択拡大モード:ON" End Select End Function
最後に、対象となるシートにSelectionChangeイベントを設定する。
Private Sub Worksheet_SelectionChange(ByVal Target As Range) If ScopeMode = False Then Exit Sub Application.EnableEvents = False ActiveWindow.Zoom = 250 Application.Goto Selection, True Application.EnableEvents = True End Sub
試してみると、こうなった ↓ 。
ON状態で検索すると、検索の結果選択されたセルが左上に表示される。選択拡大モードをOFFにすると、セルを選択してもチョロチョロとスクロールしなくなった。
一応想定した動きは実現できたが、汎用性があるかと問われると疑問が残る。
ということで、
「電話がかかってきた時に片手でExcelを操作(検索)する場面に遭遇して、しかも画面の小さな字がいよいよ見難くなってきた方向け」
という限定的な状況のお悩みをお持ちの方、是非ご活用ください(何だそりゃ)。
参考まで。