转换错误如果value =“”那么

时间:2016-12-08 13:39:38

标签: excel vb.net exception

我收到一个错误我无法解释我有一个Excel列表我要加载到内存中,看看下一行是否仍然是一个相对行我检查单元格是否有值{{{ 1}}但值为If value = "" Then,它给了我一个未处理的异常......

Error image

我不太明白为什么代码会出错,单元格值的格式就像所有先前检查过的单元格一样。但是这里会抛出一个错误。

也许我只是没有看到它,有人可以解释一下?

2 个答案:

答案 0 :(得分:1)

您应该每次都检查一下这个值。

Dim o As Object = oSheet.Range(xxx).Value

If (o IsNot Nothing) Then
  Select Case o.GetType
    Case GetType(Double)
      ' do work here
    Case GetType(Integer)
      ' do work here

  ...

  End Select
Else
  ...
End If

答案 1 :(得分:0)

我的图片没有显示给我。

excel中的大多数例外都与数据类型相关。最有可能的是,你要么是一个NULL,要么是一个看起来像人眼的整数的字符串。您可以根据需要盲目地尝试使用trim(),int()或str()等,以确保您实际测试整数或匹配字符串,如果这就是您的意思,或者您可以在编程方法中测试它们。 / p>

首先,需要测试的编程方法... isEmpty或isNull以确保细胞良好...

if isEmpty(value) Then
    <do something>

这很可能会捕获导致消息的错误。如果为空则失败,请尝试使用isNull进行测试。一个意味着单元格是空的,另一个意味着它没有初始化(很少在excel中出现问题,但如果使用vba代码则可能发生)。

另外......你的if语句设置在一个不太理想的...使用&lt;&gt;代替if then else ...

您的代码......

If value = "" Then

通用公式当你想测试某些东西不是别的东西时,使用not equals ...

if value <> "value" Then
   "some operation"