回答編集履歴

1

コード追加

2018/05/06 01:20

投稿

hatena19
hatena19

スコア33715

test CHANGED
@@ -37,3 +37,59 @@
37
37
  End Sub
38
38
 
39
39
  ```
40
+
41
+
42
+
43
+ 追記
44
+
45
+ ---
46
+
47
+ ワークシートのイベントプロシージャを使う方法が提案されているようなので、その場合の例。
48
+
49
+ ```vba
50
+
51
+ Private Sub Worksheet_Change(ByVal Target As Range)
52
+
53
+ Dim cell As Range
54
+
55
+ Dim i As Long
56
+
57
+
58
+
59
+ For Each cell In Target
60
+
61
+ If cell.Column = 7 And cell.Row >= 3 Then
62
+
63
+ If cell.Value <> "" And IsNumeric(cell.Value) Then
64
+
65
+ For i = 1 To 2
66
+
67
+ With cell.Offset(, i)
68
+
69
+ .Value = cell.Value + i
70
+
71
+ If .Value Mod 2 = 0 Then .Interior.ColorIndex = 3
72
+
73
+ End With
74
+
75
+ Next
76
+
77
+ Else
78
+
79
+ cell.Offset(, 1).Resize(, 2).Clear
80
+
81
+ End If
82
+
83
+ End If
84
+
85
+ Next
86
+
87
+ End Sub
88
+
89
+ ```
90
+
91
+ ただ、ユーザーの入力に逐一反応するという仕様なら、セルに式と条件付き書式を設定する方法でもいいように思います。
92
+
93
+
94
+
95
+ ※`Cells(行,列)` の絶対座標でセル位置を指定する方法と、Offsetで相対座標でセル位置を指定する方法がありますが、相対座標の場合、対象セル範囲が変更になったときも変更箇所が少なくてすみますので、私の場合はこちらで書く場合が多いです。