For j = 0 to SpreadCount
If TypeName(ChainsDC(j,0) = "String" 'testing for an error
Goto EndLoop
Else:
For i = 0 to RscSct
...do amazing things here (no loops)
Next i
EndLoop:
Next j '<<<PROBLEM
编译器抱怨下一个j(第9行)是“Next without For”。
答案 0 :(得分:5)
您的IF声明是问题所在。你需要添加然后和结束如果:
For j = 0 to SpreadCount
If TypeName(ChainsDC(j,0) = "String" **Then**
Goto EndLoop
Else:
For i = 0 to RscSct
...do amazing things here (no loops)
Next i
**End If**
EndLoop:
Next j '<<<PROBLEM
修改强>
您的Typename也缺少一个右括号。
答案 1 :(得分:3)
For j = 0 to SpreadCount
If TypeName(ChainsDC(j,0)) <> "String" Then
For i = 0 to RscSct
...do amazing things here (no loops)
Next i
End If
Next j
正如Remou指出的那样,你应该摆脱Goto并测试你想要测试的东西,即它不是一个字符串。
除非在该行上有另一段可执行的代码,否则你通常不应该在其他地方之后使用冒号。即便如此......
答案 2 :(得分:3)
您的代码和逻辑存在一些问题。
For j = 0 to SpreadCount
If TypeName(ChainsDC(j,0) = "String" 'testing for an error
Goto EndLoop
Else:
For i = 0 to RscSct
...do amazing things here (no loops)
Next i
EndLoop:
Next j '<<<PROBLEM
主要问题是逻辑 - 如果您只关心TypeName不是字符串,请检查它。没有必要添加else语句,更不用说GoTo了。正如人们常说的那样:
GoTo语句通常可以指示修复逻辑的机会 你的代码
有一点可以帮助您专注于想要做什么,而不是不想要做什么。首先编写预期/期望的路径,然后在(如果需要)之后添加侧面案例是很好的做法。
其他需要解决的问题:
以下是清理过的代码:
For i = 0 To SpreadCount
If TypeName(ChainsDC(i, 0)) <> "String" Then
For j = 0 To RscSct
'...do amazing things here
Next
End If
Next
答案 3 :(得分:2)
您的Else:
可能是问题所在,也可能是遗失的End If
。