嵌套的IF子句没有像我期望的那样解析

时间:2016-04-18 07:04:31

标签: excel excel-vba vba

我在模块中获得了这段代码,旨在以三种方式之一将一行数据写入输出表。 idea 用于计算每层可堆叠的项目数,然后(在CheckRTs中)将其写入输出。如果类别是" N / A"或" SELECT"它应该跳过输出部分。

实际发生的是,无论GoTo NoStack的价值如何,它似乎每次运行都会解析sCategory行。

谁能看到我出错的地方?

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:

1 个答案:

答案 0 :(得分:1)

尝试删除ElseIf之间的空格以生成ElseIf。如果您像在那里那样执行此操作,则必须在If内使用Else开始新的End。 嵌套如果最容易调试,在这个例子中Select Case应该稍微简化一下,所以你可以考虑使用它。