大量のデータを参照して出力する際に、処理を高速化するために、次のスクリーンアップデートと自動計算をOFFにして、処理後にONにすることを教わりました。実際にやってみたら確かに速くなりました。
Application.ScreenUpdating →OFF→ON
Application.Calculationl→OFF→ON
ここで、マクロを実行後、これらをOFFにしたあとに、何らかのエラーが起こって、プログラムが止まってしまったとします。そうすると、上記の2つはOFFになったままになってしまうと思います。
その後、エクセルのデータ入力などの作業をすると、そのOFFが問題になることはないでしょうか?
問題になるとしたら、何か解決策はあるでしょうか。
よろしくお願いいたします。
No.1ベストアンサー
- 回答日時:
>>その後、エクセルのデータ入力などの作業をすると、そのOFFが問題になることはないでしょうか?
問題になるでしょう。
>>問題になるとしたら、何か解決策はあるでしょうか。
プログラムが止まったってことは、使っている方には明確に分かりますよね?
だから、エラーと判れば、手作業でOFFをONに変更する命令を実行します。
あるいは、エラー処理の中にOFF->ONを入れておきます。
ありがとうございます。使う人はエクセルに詳しくない人を想定していますので、エラー処理中にOFF→ONにするしかありません。予期しない(できない)エラーが発生した場合、OFF→ONにする記述はできるのでしょうか。
No.2
- 回答日時:
まず第一に重要なことは、エラーが起きないように作るってこと。
起きそうなエラーを想定し、そうならないような処理を入れておく。
for の中に次々に投入される入力値を逐次チェックし、期待外の値だった場合はループを中断して抜けて何らかのメッセージを出して終了するとか、その回だけスキップしてループを継続するとか。
そもそもループに入る前にチェックできるのであれば事前に確認するとか。
そうやって可能性をどんどんつぶしていって、安全に処理できるプログラムを目指す。
そこまでやっても想定外のエラーが出る場合がある。
そういう場合はエラートラップを使用する。
VBA だと On Error について調べればよいと思う。
On Error GoTo LabelName
でエラートラップを掛けておき、エラー発生時に飛ぶ LabelName のところで ScreenUpdating を解除するとか。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBAのトグルボタンでのマクロについて質問です 3 2022/10/10 17:23
- Visual Basic(VBA) 【再々投稿】VBAのプログラムで動作しなくて困っています 8 2022/10/14 09:06
- 扇風機・冷風機・サーキュレーター スマートプラグで最近の扇風機は操作できない? 5 2022/11/04 13:37
- Windows 10 (続質問です No.3)Windows 10 ノートで電源OFF してもWinfi ランプが消えない 14 2023/07/22 19:48
- マウス・キーボード onまたは off で一回だけ動作するそんな都合のよいトグルスイッチなんてないですか 1 2022/08/12 16:04
- Y!mobile(ワイモバイル) スマホ アンドロイド (901ZT) のユーザー補助について 3 2023/05/16 23:23
- 輸入車 ニュービートルカブリオレ6速AT変速操作不良について 4 2022/12/27 23:59
- iPhone(アイフォーン) iPhone初心者です 3 2022/07/28 21:49
- 車検・修理・メンテナンス 4GR-FSE 電動ファンが止まらない 3 2022/09/10 17:35
- 電気・ガス・水道 電気温水器の電計契約 3 2022/04/06 10:24
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセル関数を教えてください
-
UserForm1.Showでエラーになり...
-
マクロで"#N/A"のエラー行を削...
-
実行時エラー 438 の解決策をお...
-
お助けください!VBAのファイル...
-
インポート時のエラー「データ...
-
String""から型'Double'への変...
-
VB.net 重複チェックがしたいです
-
エクセルVBA 「On Error GoTo...
-
VBAでfunctionを利用しようとし...
-
「実行時エラー '3167' レコー...
-
ASPで、変数名に、変数を入れら...
-
変数にするとエラーになる理由は?
-
【Access】Excelインポート時に...
-
実行時エラー'-2147467259(8000...
-
Excel vbaについての質問
-
ADO 「認証に失敗しました」
-
マクロの「SaveAs」でエラーが...
-
【VB.NET】 パワポ操作を非表示で
-
ACCESSで値を代入できないとは?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
UserForm1.Showでエラーになり...
-
String""から型'Double'への変...
-
VBAでfunctionを利用しようとし...
-
お助けください!VBAのファイル...
-
文字列内で括弧を使うには
-
実行時エラー 438 の解決策をお...
-
マクロで"#N/A"のエラー行を削...
-
On ErrorでエラーNoが0
-
エクセルVBA 「On Error GoTo...
-
VBA データ(特定値)のある最...
-
実行時エラー'-2147467259(8000...
-
【VBA】ワークブックを開く時に...
-
VBでSQL文のUPDATE構文を使った...
-
ACCESSで値を代入できないとは?
-
マクロの「SaveAs」でエラーが...
-
Excel vbaについての質問
-
インポート時のエラー「データ...
-
Filter関数を用いた結果、何も...
-
「実行時エラー '3167' レコー...
-
バッチファイルで、あるスクリ...
おすすめ情報
for文中のエラーを想定していますので、
On Error Resume Next
for文
On Error GoTo 0
みたいな記述をすればいいと、ネットの記事で書いてありました。
ただし、ちょっと理解ができません…
失礼しました。次の記述で何とかなりそうです。
Sub sample()
On Error GoTo myError
for 文
Exit Sub
myError
エラーしたときの処理(ONの処理)
MsgBox "予期しないエラーが発生しました"
End Sub