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

回答編集履歴

3

コード修正

2019/09/14 03:41

投稿

hatena19
hatena19

スコア34367

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

説明追加

2019/09/14 03:41

投稿

hatena19
hatena19

スコア34367

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

誤字の修正

2019/09/14 03:35

投稿

hatena19
hatena19

スコア34367

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?f1url=https%3A%2F%2Fmsdn.microsoft.com%2Fquery%2Fdev11.query%3FappId%3DDev11IDEF1%26l%3Dja-JP%26k%3Dk(vblr6.chm1012954)%3Bk(TargetFrameworkMoniker-Office.Version%3Dv16)%26rd%3Dtrue%26f%3D255%26MSPPError%3D-2147217396)
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, 2).Value Like "*[!0-9A-Za-z]*" Then
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