Riekは、ユーザー入力用の画面を設定するマクロの開発中に問題が発生しました。列A:Gは常に画面上にとどまる必要があるため、彼のマクロはそれらの列をフリーズします。次に、コマンドを発行して列Zに移動し、入力を開始します。これにより、列T:Zがフリーズされた列A:Gの右側に配置されます。 Riekが本当に望んでいるのは、列Z:AFがA:Gの右側に表示されることですが、彼はそれを実現する方法を知りません。

望ましい結果を達成する方法はいくつかあります。 1つ目は、次のマクロのように、目的のターゲットを単に「過去」に移動してから、そのターゲットに戻ることです。

Sub GotoCol1()

With Application         ActiveWindow.FreezePanes = False         Range("H1").Select         ActiveWindow.FreezePanes = True         .Goto Range("IV1")

.Goto Range("Z1")

End With End Sub

重要なコード行は、Gotoメソッドを使用する行です。最初のジャンプは最初の行の最後のセルに移動し、2番目のジャンプは真のターゲットZ1に戻ります。このように移動することにより、列Zは凍結範囲A:Gのすぐ右側に配置されます。

これは問題なく機能しますが、より良い解決策は、GotoメソッドでScrollパラメーターを使用することです。次の例を考えてみましょう:

Sub GotoCol2()

ActiveWindow.FreezePanes = False     Range("H1").Select     ActiveWindow.FreezePanes = True     Application.Goto Reference:=Range("Z1"), Scroll:=True End Sub

ScrollパラメーターはGotoメソッドではオプションです。デフォルトはFalseです。 Trueに設定すると、Gotoはウィンドウをスクロールして、ターゲット範囲(Z1)の左上隅がウィンドウの左上隅に表示されるようにします。

注:

このページ(または_ExcelTips_サイトの他のページ)で説明されているマクロの使用方法を知りたい場合は、役立つ情報を含む特別なページを用意しました。

_ExcelTips_は、費用効果の高いMicrosoftExcelトレーニングのソースです。

このヒント(10523)は、Microsoft Excel 2007、2010、2013、2016、2019、およびOffice 365のExcelに適用されます。Excelの古いメニューインターフェイス用のこのヒントのバージョンは、次の場所にあります。