回答編集履歴
2
余計なif削除
answer
CHANGED
@@ -1,11 +1,10 @@
|
|
1
1
|
MyErrorの最後で、Resume next でエラーが起こった次の行に復帰できます。
|
2
2
|
|
3
|
-
|
4
3
|
```vba
|
5
4
|
Dim a As Integer
|
6
5
|
|
7
6
|
Sub test()
|
8
|
-
a = 0
|
7
|
+
a = 0
|
9
8
|
On Error GoTo MyError
|
10
9
|
|
11
10
|
'処理1 'エラー発生
|
@@ -14,17 +13,10 @@
|
|
14
13
|
'処理2 'エラー発生
|
15
14
|
Err.Raise 200
|
16
15
|
|
17
|
-
'処理3 'エラー発生
|
18
|
-
Err.Raise 100
|
19
|
-
|
20
|
-
MsgBox a ' 2
|
21
16
|
Exit Sub
|
22
17
|
|
23
18
|
MyError:
|
24
|
-
' Err 100 のみカウントする
|
25
|
-
If Err.Number = 100 Then
|
26
|
-
|
19
|
+
Call Error
|
27
|
-
End If
|
28
20
|
Resume Next
|
29
21
|
End Sub
|
30
22
|
|
1
修正
answer
CHANGED
@@ -2,9 +2,10 @@
|
|
2
2
|
|
3
3
|
|
4
4
|
```vba
|
5
|
-
Sub test()
|
6
5
|
Dim a As Integer
|
7
6
|
|
7
|
+
Sub test()
|
8
|
+
a = 0 'いるか不明
|
8
9
|
On Error GoTo MyError
|
9
10
|
|
10
11
|
'処理1 'エラー発生
|
@@ -22,14 +23,12 @@
|
|
22
23
|
MyError:
|
23
24
|
' Err 100 のみカウントする
|
24
25
|
If Err.Number = 100 Then
|
25
|
-
|
26
|
+
Call Error
|
26
27
|
End If
|
27
28
|
Resume Next
|
28
29
|
End Sub
|
29
30
|
|
30
|
-
Private
|
31
|
+
Private Sub Error()
|
31
|
-
'たぶんグローバルな a に対して、加算したいのだとは思うが・・・
|
32
|
-
|
32
|
+
a = a + 1 '呼び出された回数をカウント
|
33
|
-
End
|
33
|
+
End Sub
|
34
|
-
|
35
34
|
```
|