MW211 EXIT

devlog
ExcelVBA/ボタン押下のApplication.Goto
2018年02月12日
「Application.Goto」命令で、特定のセルに飛んでも、
フォーカスがあたるだけで、アクティブ(セレクト)になる訳ではない場合ある。

つまり、ボタン押下のイベントで「Application.Goto」命令で
自シートのいずれかのセルに飛ぶと、飛ぶことはできるが
その後、キー操作を受け付けない(セルをダブルクリックするか何かしなければならない)

これは、アクティブなのがボタン(オブジェクト)側だからである。

これを解消する(アクティブにする)には、「Application.Goto」命令直後に
「ActiveCell.Select」など(*1)を実行すればよい。

*1:以下のいずれでもOK
  ・「ActiveCell.Activate」
  ・「ActiveCell.Select」
  ・「Selection.Activate」
  ・「Selection.Select」

なお、他シートへ飛ぶ場合には、
ボタンにフォーカスが当たっているのは自シート側なので
このような現象は発生しづらいが、直前のそのシートでボタンを押下しているなど
オブジェクト側にフォーカスが当たっていれば、同じ論理でキー操作を受け付けなくなる

例えば、二つのシートにボタンを配置し、
それぞれ他方の特定のシートに飛ぶようにした場合、
飛んだ先のシートではいずれもキー操作を受け付けないことになる

なお、オブジェクト側がアクティブになっている場合
画面左上の「名前ボックス」は空欄となっているのが目安となる。
分類:ExcelVBA