回答編集履歴
5
追記
test
CHANGED
@@ -73,3 +73,7 @@
|
|
73
73
|
```
|
74
74
|
|
75
75
|
あぁ、やってみてないけど、同じことがマクロなしでも、入力規則の機能でできるのでは?と思います。
|
76
|
+
|
77
|
+
マクロなしで出来るならマクロなしの方が、「元に戻す」がクリアされないので、
|
78
|
+
|
79
|
+
そちらの方がより良いかと思います。
|
4
追記
test
CHANGED
@@ -71,3 +71,5 @@
|
|
71
71
|
End Sub
|
72
72
|
|
73
73
|
```
|
74
|
+
|
75
|
+
あぁ、やってみてないけど、同じことがマクロなしでも、入力規則の機能でできるのでは?と思います。
|
3
コードの追記
test
CHANGED
@@ -35,3 +35,39 @@
|
|
35
35
|
参考>>
|
36
36
|
|
37
37
|
[条件付き書式で変更された書式を取得する](https://excel-ubara.com/excelvba5/EXCELVBA263.html)
|
38
|
+
|
39
|
+
|
40
|
+
|
41
|
+
追記>>
|
42
|
+
|
43
|
+
セルに入力した時にチェックするなら、色がどうのとか関係ないですよね?
|
44
|
+
|
45
|
+
```ExcelVBA
|
46
|
+
|
47
|
+
Private Sub Worksheet_Change(ByVal Target As Range)
|
48
|
+
|
49
|
+
Dim rngEventArea As Range: Set rngEventArea = Me.Range("B4:D8")
|
50
|
+
|
51
|
+
|
52
|
+
|
53
|
+
If Target.CountLarge > 1 Then Exit Sub
|
54
|
+
|
55
|
+
Set Target = Intersect(Target, rngEventArea)
|
56
|
+
|
57
|
+
If Target Is Nothing Then Exit Sub
|
58
|
+
|
59
|
+
Set rngEventArea = Intersect(Target.EntireRow, rngEventArea)
|
60
|
+
|
61
|
+
|
62
|
+
|
63
|
+
If WorksheetFunction.CountIf(rngEventArea.Cells, Target.Value) > 1 Then
|
64
|
+
|
65
|
+
MsgBox "既に同じ値を入力済みです。", vbExclamation
|
66
|
+
|
67
|
+
Application.Undo
|
68
|
+
|
69
|
+
End If
|
70
|
+
|
71
|
+
End Sub
|
72
|
+
|
73
|
+
```
|
2
修正
test
CHANGED
@@ -14,7 +14,7 @@
|
|
14
14
|
|
15
15
|
|
16
16
|
|
17
|
-
For Each c In Range("B
|
17
|
+
For Each c In Range("B4:D8")
|
18
18
|
|
19
19
|
If c.DisplayFormat.Interior.Color = vbRed Then
|
20
20
|
|
1
修正
test
CHANGED
@@ -14,7 +14,7 @@
|
|
14
14
|
|
15
15
|
|
16
16
|
|
17
|
-
For Each c In Range("B5:
|
17
|
+
For Each c In Range("B5:D8")
|
18
18
|
|
19
19
|
If c.DisplayFormat.Interior.Color = vbRed Then
|
20
20
|
|