changeイベントで値を入力した隣のセルに特定の値を出力できるようにしました。
一個一個のセルに自身で値を入力し、隣のセルに特定の値を出力する流れでは、速度が気になることが無いのですが、
まとめて入力あるいは、まとめて削除をすると、処理が遅くなってしまいます。
changeイベントでまとめて選択した時にも動作するように for each を使用しているので、まとめて入力(削除)するセルが多くなればなるほど、処理に時間がかかってしまうのは分かるのですが、
処理をより高速にする方法は何かないでしょうか。
以下にサンプルコードを載せますので、参考にして頂けますと幸いです。
VBA
1Private Sub Worksheet_Change(ByVal Target As Range) 2 3Dim startTime As Double, endTime As Double 4 5startTime = Timer 6'値が入力されるセルは1列目=A列のみと仮定。 7Dim myRng As Range 8For Each myRng In Target 9 If (myRng.Value = "") Then 10 ActiveSheet.Cells(myRng.Row, 2).ClearContents 11 Else 12 ActiveSheet.Cells(myRng.Row, 2).Value = "〇" 13 End If 14Next myRng 15endTime = Timer 16 17Debug.Print endTime - startTime 18 19End Sub
一応時間も計測してみたのですが、
10行分の
入力で 3.4秒
削除で 4.5秒
の時間がかかってしまっています。
もちろん時間に関しては使用するパソコンのスペックに依るところも大きいので、本当に参考程度にしかならないかと思いますが、念のため測定しました。
もしchangeイベントでまとめてセルを扱う際に、処理を高速にする方法がございましたら、教えて頂けますと幸いです。
宜しくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/04/24 04:47