嵌套的IF子句不像我所期望的那样parsing

我已经在模块中获得了这段代码,用三种方式之一写一行数据到输出表。 这个想法是计算每层可堆叠的项目数,然后(在CheckRTs )将其写入输出。 如果类别是“不适用”或“select”,则应跳过输出部分。

实际发生的事情是,无论sCategory的值是什么,似乎都是在每次运行时分析GoTo NoStack行。

任何人都可以看到我要去哪里错了?

 If sCategory = "Plates" Then If dWidth > wsSorter.Cells(iSrcLine, 19).Value / 2 Then iLayerQty = 1 If dWidth <= wsSorter.Cells(iSrcLine, 19).Value / 2 Then iLayerQty = Int(wsSorter.Cells(iSrcLine, 19).Value / dWidth) Else If sCategory = "N/A" Or sCategory = "SELECT" Then GoTo NoStack Else If dWidth > wsSorter.Cells(iSrcLine, 19).Value / 2 Then iLayerQty = 1 If dWidth <= wsSorter.Cells(iSrcLine, 19).Value Then iLayerQty = Int((wsSorter.Cells(iSrcLine, 19).Value - dStanchion) / dWidth) End If Do CheckRTs: If IsEmpty(wsRTTrack.Cells(iRTCount, 1)) = False Then WriteLine ElseIf IsEmpty(wsRTTrack.Cells(iRTCount, 1)) = True Then MakeNewRT GoTo CheckRTs End If Loop While iQty > 0 NoStack: 

尝试删除拳头之间的空间ElseIf ElseIf 。 如果你这样做,就像你在那里做的那样, IfElse有自己的End ,你就会开始新的
嵌套如果不是最简单的debugging,在这个例子中, Select Case应该使事情略微easysr,所以你可以考虑使用它。