VBA技術解説
Application.Goto使用時の注意

ExcelマクロVBAの問題点と解決策、VBAの技術的解説
公開日:2016-09-19 最終更新日:2016-09-19

Application.Goto使用時の注意

Applicationのメソッドに、Gotoメソッドがあります、


Application.Gotoメソッドは、指定ブックの、指定シートの、指定セル範囲を選択します、
そのブック・シートがアクティブでなければアクティブにします。

最初に、Application.Gotoの一般的な文法説明をします。

Application.Goto(Reference, Scroll)

Reference
移動先を指定します。
Range オブジェクト、R1C1 形式のセル参照文字列、および Visual Basic のプロシージャ名を表す文字列です。
この引数を省略すると、移動先は、直前に Goto メソッドを使ったときのセル範囲になります。


Scroll

移動先セル範囲の左上端がウィンドウの左上端に表示されるようにウィンドウをスクロールするには、True を指定します。
ウィンドウをスクロールしないようにするには、False を指定します。
既定値は False です。


Selectメソッドとは、以下の点で違いがあります。

アクティブでないワークシートのセル範囲を指定すると、そのシートに切り替えてからセル範囲が選択されます。
※Selectメソッドでは、最前面にないワークシートを対象としたとき、そのセル範囲は選択されますが、ワークシートはアクティブにはなりません。
Goto メソッドには引数 Scroll があり、ウィンドウを自動的にスクロールできます。
Select メソッドには引数 Replace がありますが、Goto メソッドにはありません。



とても便利なメソッドです。
ウィンドウ枠の固定をしているときには、特に重宝します。
ウィンドウ枠を固定をしているときは、単にA1をSelectしても元の選択セル位置によっては、完全にはスクロールされません。
固定枠の外側が選択されているとき、固定枠の外側はスクロールされないのです。
しかし、Application.Gotoを使えば、完全にスクロールが行われます。

しかし、時に問題があるようです。

Excelのアプリケーションそのものが異常終了してしまう事が有ります。
どのような条件で発生するかが判明していませんが、
間違いなく、このApplication.Gotoが原因でExcelが終了してしまいます。
原因および発生条件が不明なので、断定した発言はしづらいのですが、
複数の環境(PC)で確認していますし、
Application.Gotoの使用を取りやめたことで解決してます。


ただし、発生条件と言うほどでもないのですが、
Application.Gotoの実行以前に、かなりのシート操作(つまり複雑な処理)が行われているマクロに限定されるようです。
短めのVBAコード(つまり簡単な処理)であれば、現象は発生していません。
恐らく、解決方法としては、
DoEvents
Application.ScreenUpdating = True
このあたりとの組み合わせにより回避できるのではないかと思われますが、
SelectとActiveWindow.LargeScrollで書き直した方が確実に対処で来ます。

ネットで検索しても、同様の報告が見当たりませんでしたので、
自身の覚書の意味で掲載しておきます。
原因および発生条件等で、何か情報がありましたら、ご一報いただけると助かります。



同じテーマ「マクロVBA技術解説」の記事

フォルダー・ファイル・ブック・シートの文字制限

・フォルダ・ファイル・ブックの文字制限 ・シートの文字制限
Excel2013におけるScreenUpdatingの問題点
今現在、Excelの最新バージョンであるExcel2013ですが、Application.ScreenUpdating の動作が、それまでとは違ったものになっています。Microsoftサポートにも掲載されています。Excel2013で複数のブックを開きAppliction.ScreenUpdatingプロパティ使…
Dir関数の制限について
・3桁拡張子の指定時の問題 ・256バイトを超えるパス名が扱えない ・UNICODEファイル名が扱えない ・特殊なネットワークドライブでエラー ・Dir関数の制限の最後に
よくあるVBA実行時エラーの解説と対応
・データ型のエラー ・計算時のエラー ・インデックスのエラー ・オブジェクトの設定エラー ・メソッド・プロパティのエラー ・引数のエラー ・実行時エラー関連記事
Application.Goto使用時の注意
ScreenUpdating=False時にエラー停止後にシートが固まったら
マクロVBAでは、処理の高速化や画面チラつきを防ぐために、Application.ScreenUpdating=False これを入れていることが多いと思います。これが入っていると、マクロVBAがエラーで停止して、そこで「リセット」した場合に、Excelシートをクリック出来なくなったり、シートタブの切り替えができな…
標準スタイル違いの問題点:標準フォント複写、列幅をピクセルで合わせる
VBAでスタイルの標準フォントが違うブック間のコピー等の処理では、列幅や行高の違いが問題となる場合があります。列幅や行高は、標準スタイルの1文字分を基本としているためです。上の画像は、標準フォントが違うブックにおいて、同じ列幅20の時の、列幅の表示です。
VBAでエラー行位置(行番号)を取得できるErl関数
・Erl関数とは ・Erl関数の使用例 ・Erl関数の最後に
WorksheetFunction.Matchで配列を指定した場合の制限について
WorksheetFunctionでMatchを使いデータ検索する事は良くあります。この時、他の部分の記述との関係で、配列を指定してMatchを行う事があります。以下のようなVBAコードになります。これは正しく動作します。
VBAでシート関数使用時の配列要素数制限
・FILTER関数 ・SORT関数、SORTBY関数 ・UNIQUE関数 ・XLOOKUP関数、HLOOKUP関数、VLOOKUP関数 ・XMATCH関数、MATCH関数 ・TRANSPOSE関数 ・VBAでシート関数使用時の配列要素数制限まとめ


新着記事NEW ・・・新着記事一覧を見る

ExcelマクロVBA入門目次|エクセルの神髄(2024-03-20)
VBA10大躓きポイント(初心者が躓きやすいポイント)|VBA技術解説(2024-03-05)
テンキーのスクリーンキーボード作成|ユーザーフォーム入門(2024-02-26)
無効な前方参照か、コンパイルされていない種類への参照です。|エクセル雑感(2024-02-17)
初級脱出10問パック|VBA練習問題(2024-01-24)
累計を求める数式あれこれ|エクセル関数応用(2024-01-22)
複数の文字列を検索して置換するSUBSTITUTE|エクセル入門(2024-01-03)
いくつかの数式の計算中にリソース不足になりました。|エクセル雑感(2023-12-28)
VBAでクリップボードへ文字列を送信・取得する3つの方法|VBA技術解説(2023-12-07)
難しい数式とは何か?|エクセル雑感(2023-12-07)


アクセスランキング ・・・ ランキング一覧を見る

1.最終行の取得(End,Rows.Count)|VBA入門
2.RangeとCellsの使い方|VBA入門
3.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
4.繰り返し処理(For Next)|VBA入門
5.変数宣言のDimとデータ型|VBA入門
6.ブックを閉じる・保存(Close,Save,SaveAs)|VBA入門
7.並べ替え(Sort)|VBA入門
8.条件分岐(IF)|VBA入門
9.セルのクリア(Clear,ClearContents)|VBA入門
10.マクロとは?VBAとは?VBAでできること|VBA入門




このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。


記述には細心の注意をしたつもりですが、
間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。
掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。



このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。
本文下部へ