まりふのひと

Excel-VBAでCtrl+Homeを実行するには

 [ウィンドウ枠の固定]を行っていると、Ctrl+Home を多用することになる。
これを VBA で実行しようと[マクロの記録]を行っても、例えば “Range("C2").Select” と記録されるだけで面白くない。
解決策がないものだろうか‥‥ とググった。

  1. 【質問】[Ctrl]+[Home]は?mixiコミュニティ)
     そのまんまですが、 SendKeys "^{HOME}"
    ダメですか、やっぱり。
  2. VBAで CTRL+HOMEの位置へ移動したい教えて!goo
     こういうのでも。 Application.Goto Range("A1"), True



 両者とも上手く動作した。

  • No.1 はセルC2がアクティブになったが、(Ctrl+Home と同じ)
     → エッ? アッ! そうかという感じ。頭が固くなっている証拠だなぁ〜
  • No.2 はセルA1がアクティブになった。
     → Excelのヘルプ(下記)を読んでも、使用例以外は理解できない。脳が退化している証拠だなぁ〜
Windows7/Excel2010上でのヘルプ

Application.Goto メソッド
 任意のブック内の任意のセル範囲や Visual Basic のプロシージャを選択します。そのブックがアクティブでなければアクティブにします。
構文
 式.Goto(Reference, Scroll)
パラメーター

  • Reference
     移動先を指定します。Range オブジェクト、R1C1 形式のセル参照文字列、および Visual Basic のプロシージャ名を表す文字列です。この引数を省略すると、移動先は、直前に Goto メソッドを使ったときのセル範囲になります。
  • Scroll
     移動先セル範囲の左上端がウィンドウの左上端に表示されるようにウィンドウをスクロールするには、True を指定します。ウィンドウをスクロールしないようにするには、False を指定します。既定値は False です。

備考
 このメソッドは次の点で Select メソッドと異なります。

  • アクティブでないワークシートのセル範囲を指定すると、そのシートに切り替えてからセル範囲が選択されます (Select メソッドでは、最前面にないワークシートのセル範囲を対象としたとき、そのセル範囲は選択されますが、ワークシートはアクティブにはなりません)。
  • Goto メソッドには引数 Scroll があり、ウィンドウを自動的にスクロールできます。
  • Goto メソッドを使うと、Goto メソッドが実行される直前の選択範囲が移動先の配列に追加されます (PreviousSelections プロパティの解説参照)。この機能を利用すると、最大 4 個の移動先の間を高速移動できます。
  • Select メソッドには引数 Replace がありますが、Goto メソッドにはありません。
使用例
 次の使用例は、シート 1 のセル A154 を選択し、その選択範囲が表示されるようにウィンドウをスクロールします。

Application.Goto Reference:=Worksheets("Sheet1").Range("A154"), scroll:=True