teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

追記

2021/04/24 04:45

投稿

jinoji
jinoji

スコア4592

answer CHANGED
@@ -1,2 +1,26 @@
1
1
  For文の中で隣のセルの値を変える都度、このChangeイベントが走っているのではないでしょうか。
2
- なので、この処理の先頭で Application.EnableEvents = False にするのが良いと思います。
2
+ なので、この処理の先頭で Application.EnableEvents = False にするのが良いと思います。
3
+
4
+ ```VBA
5
+ Private Sub Worksheet_Change(ByVal Target As Range)
6
+ 'Eventの感知を停止
7
+ Application.EnableEvents = False
8
+
9
+ '処理時間測定用
10
+ Dim startTime As Double, endTime As Double
11
+ startTime = Timer
12
+
13
+ Dim myRng As Range
14
+ For Each myRng In Target
15
+ '値が入力されるセルは1列目=A列のみと仮定。
16
+ If myRng.Column = 1 Then myRng.Offset(, 1).Value = IIf(myRng.Value = "", "", "○")
17
+ Next myRng
18
+
19
+ '処理時間測定用
20
+ endTime = Timer
21
+ Debug.Print endTime - startTime
22
+
23
+ 'Eventの感知を再開
24
+ Application.EnableEvents = True
25
+ End Sub
26
+ ```