如何解决从Excel文件中读取合并单元格值的错误?

我有这个代码读取Excel文件中的每个单元格。

Do Until objRange.Cells(intRow, 1).value.Equals("小 計") 

intRow都会递增,但是当单元格指向一个合并的行时,比如说,第3,4和5行被合并 – 当它指向3时,它会执行,但是当它指向4时,它会返回一个错误 – System.NullReferenceException

我如何解决这个错误,所以当它导致一个错误,它会简单地增加,并移动到下一行? 我尝试On Error Resume Next但它似乎没有移动到下一个intRow 。 它仍然会导致一个错误,但这一次,这是合乎逻辑的,因为当它导致一个错误时,它会恢复下一行,所以intRow不增加,但值似乎是在递增的intRow位置。 这就是我所理解的。 任何人也可以解释这是如何造成逻辑错误?

以下是导致逻辑错误的最新代码

  On Error Resume Next Do Until objRange.Cells(intRow, 1).value.Equals("小 計") 'causes an error If objRange.Cells(intRow, 1).Value.Equals("I") Then Do Until objRange.Cells(intRow + 1, 1).Value.Equals("II") If Not objRange.Cells(intRow + 1, 2).Font.Size.Equals("16") Then intBunruiType += 1 arrBunruiType(intBunruiType) = "I" End If intRow += 1 Loop ElseIf objRange.Cells(intRow, 1).value.Equals("II") Then Do Until objRange.Cells(intRow + 1, 1).value.Equals("III") If Not objRange.Cells(intRow + 1, 2).Font.Size.Equals("16") Then intBunruiType += 1 arrBunruiType(intBunruiType) = "I" End If intRow += 1 Loop End If intRow += 1 Loop 

程序是这样的。 第一列的单元格值如下所示:

 I - - II - - - - - III - - IV 

-代表空白。 所以当I之后的单元格的值为空时,我检索I,当单元格的值为II ,除II之后和III之前的单元格值,我将检索II等等……假设下一列在I, II, III and IV中没有字体大小16

当你On Error Resume Next ,你仍然会有问题,因为intRow需要增加,所以你可以到下一行。 你可以做这样的事情:

 On Error GoTo HandleError 

然后在你的子/函数的底部,你可以把这样的东西递增intRow ,然后回到导致错误的行:

 HandleError: intRow += 1 Resume 

处理这个问题的另一种方法是检查单元格对象是否为空。 我的猜测是,错误是由于尝试访问objRange.Cells(intRow, 1)对象的.Value属性引起的。 如果对象不存在,则无法从对象获取属性。 如果是这种情况,请在检查值之前检查对象是否存在。 如果没有,那么只需增加intRow 。 你可以检查是否存在这样的对象:

 If objRange.Cells(intRow, 1) = Nothing Then End If