回答編集履歴
3
コード修正
answer
CHANGED
@@ -31,7 +31,7 @@
|
|
31
31
|
|
32
32
|
|
33
33
|
'郵便番号チェック
|
34
|
-
If Not Cells(i, 8).Value Like "###-####" Then
|
34
|
+
If Not Me.Cells(i, 8).Value Like "###-####" Then
|
35
|
-
Cells(i, 8).Interior.Color = RGB(255, 0, 0)
|
35
|
+
Me.Cells(i, 8).Interior.Color = RGB(255, 0, 0)
|
36
36
|
End If
|
37
37
|
```
|
2
説明追加
answer
CHANGED
@@ -11,6 +11,14 @@
|
|
11
11
|
シートモジュールに記述していてそのシートが対象なら`Me.`、標準モジュールに記述してアクティブなシートが対象なら`ActiveSheet.`を付けるようにして、対象のシートを明示しましょう。
|
12
12
|
|
13
13
|
---
|
14
|
+
> 意図的に文字列から数値に変換してもすべてセルの色が赤になってしまいました。
|
15
|
+
|
16
|
+
セルの書式設定のことですか?
|
17
|
+
半角英数字(数字とアルファベット)を許可するなら、数値にしてはダメでしょう。アルファベットは数値ではないので。
|
18
|
+
郵便番号もハイフンを含むし、ハイフンを省略する場合も、数値にすると先頭の0が消えるのでダメです。
|
19
|
+
文字列にすべきです。
|
20
|
+
|
21
|
+
---
|
14
22
|
半角英数字と郵便番号のチェックなら、RegExpを使うまでもなくLike演算子でも可能です。
|
15
23
|
|
16
24
|
|
1
誤字の修正
answer
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
いくつか気になる点。
|
2
2
|
---
|
3
3
|
`Dim Err As Boolean`
|
4
|
-
Errはそういうオブジェクトがあるので変数名としては適切ではない。
|
5
|
-
[Err オブジェクト | Microsoft Docs](https://docs.microsoft.com/ja-jp/office/vba/language/reference/user-interface-help/err-object
|
4
|
+
Errはそういうオブジェクトがあるので変数名としては適切ではない。別の名前に変更しましょう。
|
5
|
+
[Err オブジェクト | Microsoft Docs](https://docs.microsoft.com/ja-jp/office/vba/language/reference/user-interface-help/err-object)
|
6
6
|
|
7
7
|
|
8
8
|
---
|
9
9
|
`Me.Cells(i, 4).Value` と `Cells(i, 3).Value` というように `Me.` が付くのと付いてないのが混在しているが、どちらかに統一しましょう。
|
10
10
|
ただし、省略するのは可読性が悪くなるので、
|
11
|
-
シートモジュールに記述してそのシートが対象なら`Me.`、標準モジュールに記述してアクティブなシートが対象なら`ActiveSheet.`を付けるようにして、対象のシートを明示しましょう。
|
11
|
+
シートモジュールに記述していてそのシートが対象なら`Me.`、標準モジュールに記述してアクティブなシートが対象なら`ActiveSheet.`を付けるようにして、対象のシートを明示しましょう。
|
12
12
|
|
13
13
|
---
|
14
14
|
半角英数字と郵便番号のチェックなら、RegExpを使うまでもなくLike演算子でも可能です。
|
@@ -17,7 +17,7 @@
|
|
17
17
|
```vba
|
18
18
|
|
19
19
|
'半角英数字チェック
|
20
|
-
If Me.Cells(i,
|
20
|
+
If Me.Cells(i, 3).Value Like "*[!0-9A-Za-z]*" Then
|
21
21
|
Me.Cells(i, 3).Interior.Color = RGB(255, 0, 0)
|
22
22
|
End If
|
23
23
|
|