2016-05-26 15 views
1

私がしようとしているのは、エラーがあった場合に特定の値がリセットされるということです。ような何か:エラー時に変数に値を代入する

Dim r As Integer 
Dim feeder As String 
Dim origen As String 

On Error GoTo errhandler: 
For j=1 to 100 
    r = Evaluate("=MATCH(1, (C:C=""" & feeder & """) * (D:D=""" & origen & """),0)") 
Next j 

Exit Sub 

errhandler: 
r = 0 
End Sub 

しかし、どのように、私はエラーが発生した場合Forに戻ってそれを強制しますか?

+2

ループ内の変異体として最初に宣言rを使用します。次に、isError(r)を使って何かをするかどうかを判断します。 –

+0

ループ内で宣言する必要があるのはなぜですか? –

+0

は一度整数に設定されるとエラーを受け付けなくなるためです。そのたびに変数の次元を変更する必要があります。 –

答えて

2

代わりのエラーにrの値を設定するISERRORを使用することができErrHanlding:

Sub t1() 
    Dim feeder As String 
    Dim origen As String 
    For j = 1 To 100 
    Dim r As Variant 
    If IsError(Evaluate("=MATCH(1, (C:C=""" & feeder & """) * (D:D=""" & origen & """),0)")) Then 
    r = 0 
    Else 
    r = Evaluate("=MATCH(1, (C:C=""" & feeder & """) * (D:D=""" & origen & """),0)") 
    End If 
    Debug.Print r ' Just for you to check 
Next 

End Sub 
+0

"On Error Resume Next"は実際に必要なのですか? – user3598756

+0

いいえ!@ user3598756 – EoinS

+0

@user3598756いいえ、Iserrorはトラップを使用していますが、これは問題ではありません。エラーとそれでrにエラーを入れようとはしません。 –

1

ちょうどResume Next声明

Dim r As Integer 
Dim feeder As String 
Dim origen As String 

On Error GoTo errhandler: 
For j=1 to 100 
    r = Evaluate("=MATCH(1, (C:C=""" & feeder & """) * (D:D=""" & origen & """),0)") 
Next j 

Exit Sub 

errhandler: 
r = 0 
resume Next 

End Sub 
関連する問題