2016-04-18 11 views
0

私はこのコードをモジュールに入れました。これは、出力シートに3つの方法のいずれかでデータ行を書き込むことを目的としています。 アイディアは、レイヤーごとに積み重ねることができるアイテムの数を計算し、次にそれを出力に書き出します(CheckRTs)。カテゴリが「該当なし」または「選択」の場合は、出力セクションをスキップする必要があります。期待通りにネストされたIF句がありません

実際に起こっていることは、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: 
+2

https://msdn.microsoft.com/en-us/library/752y8abs.aspx: 'Else If'は' ElseIf'でなければなりません。 –

+0

良いキャッチ、歓声! –

答えて

1

ElseIfを作るために拳ElseIfの間のスペースを削除してみてください。あなたがそこにいたようにしたら、Elseの中に新しくIfを始めてみようと思います。End
入れ子になっているのが最も簡単なデバッグではない場合、この例ではSelect Caseは少しeasiesrにする必要があります。代わりに。

+0

私は前に述べたSelect Caseを見たことがあります。私はまだVBAにはまったく新しいので、見上げて試してみます。 –

+1

http://www.techonthenet.com/excel/formulas/case.php - これは役に立ちます –

+1

これは治療を受けました - 多くの感謝! –