VBA数组错误2007 if语句

时间:2016-09-13 13:06:32

标签: vba excel-vba excel

可能是一个简单而常见的问题,但我在谷歌中找不到任何东西。 我将一些数据存储在数组中,但有时这些数据有错误值,在本例中为var bulk = new BulkOperations(); var records = GetRecordsToUpdate(); using (TransactionScope trans = new TransactionScope()) { using (SqlConnection conn = new SqlConnection(ConfigurationManager .ConnectionStrings["SqlBulkToolsTest"].ConnectionString)) { bulk.Setup<MyTable>() .ForCollection(records) .WithTable("MyTable") .AddColumn(x => x.SomeColumn1) .AddColumn(x => x.SomeColumn2) .BulkUpdate() .MatchTargetOn(x => x.Identifier) .Commit(conn); } trans.Complete(); }

我在循环中使用这个数组,所以我需要检查是否循环这个不正确的值。

我试过了:

xlErrDiv0 2007    #DIV/0!

和其他一些选项,但我总是收到类型不匹配错误。 If vRangeShift(1, i) <> CVErr(xlErrDiv0) Then End if If vRangeShift(1, i) = "Error 2007" Then vRangeShift类型。只有当我检查这个不正确的数组元素时才会出现问题。

2 个答案:

答案 0 :(得分:4)

这应该可以解决问题:

If IsError(vRangeShift(1, i)) Then

答案 1 :(得分:0)

其中一种方法是捕获错误并使用一些代码进一步处理它。

On error goto HandleMyError
    'do something with vRangeShift(1, i)

'... more code here ....'
Cont:
    'finish out sub

Exit Sub 'Have this here so if there isn't an error, you can skip over
         'the error handler
HandleMyError:
    'if doing something with vRangeShift(1,i) produces an error, you 
    'you will end up here where you can handle the error as you see fit
    'once you've satisfactorily handled the error, you can return to 
    'that part of your code where you want the sub to continue
    Goto Cont

End Sub