『毎ファイルで使う基本的なコードについて』(jjx)
VBAを使うときによく使う、画面の更新を止める、はじめる
といのを毎ファイルに書いて
必要なときに呼び出して
call ed(エンドの意)
call st(スタートの意)
としています
似たようなものがいくつかあります
それらは、新しいファイルを作るたびに書かなければ
どうしようもないですか?
VBAの初期値としてある適度のコードを保持させておきたいです
< 使用 Excel:Microsoft365、使用 OS:Windows11 >
私は、常にそれら(Screenupdating,Calculation等)を律儀に実行することはありませんね。 もしするなら、そういうものをプロシージャ化しておくこともあるでしょうね。 特別なオプションでそれらを省略するといった方法はないと思います。 (xyz) 2024/03/21(木) 05:50:13
個人用マクロにそれらの定型プロシージャを置いて、それをCallするという手もあるかもしれません。
(xyz) 2024/03/21(木) 06:14:28
外部との通信でよく使う手を応用すれば、 以下のような使い方も可能かと。
クラスのInitialize、Terminateイベントにて。 プロシージャ先頭で宣言、インスタンス化しておけば、 そのプロシージャから抜ける際、破棄イベントが発生で、 後始末する。
'標準Module Sub sample() Debug.Print "START" Call subProc Debug.Print "END" End Sub Private Sub subProc() Dim c As Class1 Set c = New Class1 Debug.Print "SUB" End Sub
'Class1 Module Private Sub Class_Initialize() Application.ScreenUpdating = False End Sub
Private Sub Class_Terminate() Application.ScreenUpdating = True End Sub
(tkit) 2024/03/21(木) 08:28:06
>画面の更新を止める、はじめる
基本的に使わない、障害があるような気がして余計に使わなくなった 動かない状態で待たされる分余計に時間かかっているような気になる 画面が更新されてないと、フリーズしているのかと勘違いするし (心配性) 2024/03/21(木) 10:08:23
> 似たようなものがいくつかあります > それらは、新しいファイルを作るたびに書かなければ > どうしようもないですか?
一例として画面の更新が挙げられてますが、質問の本質はこちらですね。
すでに出ていますが、個人用マクロに置いておけばいいでしょう。 あるいは、アドインにするかですね。
これも既に出ていますが、クラスにしておけば、最初に宣言、生成しておけば、 最後に戻す処理を記述しなくてもよくなります。
クラス化とアドイン化については下記が参考になるでしょう。
エクセルVBAの実行速度を高速化するための処理をクラス化する方法 https://tonari-it.com/excel-vba-class-performance-booster/
便利なクラスを使い回す!エクセルVBAで自作クラスをアドイン化する方法 https://tonari-it.com/excel-vba-class-addin/
エクセルVBAで自作アドインの便利クラスを活用する方法 https://tonari-it.com/excel-vba-class-addin-reference/
(hatena) 2024/03/21(木) 10:34:14
所要時間表示も含めてクラスにしたものをよく使っています。^^;
心配性さんご案内の件も。。。ありますよね。
別途対応という事で。。。(*^^*)
もう既にすばらしい解決方法がご案内済で恐縮です。。。m(__)m
(隠居Z) 2024/03/21(木) 11:00:20
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.