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

回答編集履歴

2

コード修正

2020/06/18 13:15

投稿

hatena19
hatena19

スコア34367

answer CHANGED
@@ -2,15 +2,22 @@
2
2
 
3
3
  `Target.Cells.Count`で更新されたセルの数が取得できるので、これが1の時だけ処理をするようにすればいいでしょう。
4
4
 
5
+ > 実際のコードはもっと列があり、それぞれの列に色々な条件で動く処理が書かれている
6
+
5
7
  ```vba
6
8
  Private Sub Worksheet_Change(ByVal Target As Range)
7
- If Target.Cells.Count = 1 Then '単一セルの更新
9
+ If Target.Cells.Count = 1 Then '単一セルの更新
8
- If Not Intersect(Target, Range("A:A,B:B")) Is Nothing Then '更新セルはA列またはB列
10
+ Select Case Target.Column
11
+ Case 1
9
- Msgbox "更新された値:" & Target.Value
12
+ MsgBox "更新された列:" & Target.Column & " 更新値:" & Target.Value
10
13
 
11
- '実行したい処理
14
+ Case 2
12
-
15
+ MsgBox "更新された列:" & Target.Column & " 更新値:" & Target.Value
16
+
17
+ Case 3
18
+ MsgBox "更新された列:" & Target.Column & " 更新値:" & Target.Value
19
+
13
- End If
20
+ End If
14
21
  End If
15
22
  End Sub
16
23
  ```

1

コード修正

2020/06/18 13:15

投稿

hatena19
hatena19

スコア34367

answer CHANGED
@@ -4,10 +4,13 @@
4
4
 
5
5
  ```vba
6
6
  Private Sub Worksheet_Change(ByVal Target As Range)
7
- If Target.Cells.Count = 1 Then
7
+ If Target.Cells.Count = 1 Then '単一セルのみ更新
8
+ If Not Intersect(Target, Range("A:A,B:B")) Is Nothing Then '更新セルはA列またはB列
9
+ Msgbox "更新された値:" & Target.Value
8
10
 
9
- '実行したい処理
11
+ '実行したい処理
12
+
10
-
13
+ End If
11
14
  End If
12
15
  End Sub
13
16
  ```