回答編集履歴

1

追記

2021/04/24 04:45

投稿

jinoji
jinoji

スコア4585

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