If statement If语句未退出For循环

If statement If语句未退出For循环,if-statement,vbscript,exit,If Statement,Vbscript,Exit,如果输入角度为90,我尝试使用此代码退出循环。代码没有做到这一点,但令人沮丧的是,虽然我的代码中没有完全相同的内容,但我成功地使用了相同的格式If语句。我还成功地为使用了退出 这是我指的代码 If Not (Angle = 90) Then Exit For End If ***我发现了我的错误,但这是代码,以防有人遇到类似的错误。我忘了我已经把角度从度改成弧度了 *编辑以显示角度的来源: oriInput = Split(Me.oriInputList.Value, ",") ReDi

如果输入角度为90,我尝试使用此代码退出循环。代码没有做到这一点,但令人沮丧的是,虽然我的代码中没有完全相同的内容,但我成功地使用了相同的格式
If
语句。我还成功地为使用了退出

这是我指的代码

If Not (Angle = 90) Then
  Exit For
End If
***我发现了我的错误,但这是代码,以防有人遇到类似的错误。我忘了我已经把角度从度改成弧度了

*编辑以显示角度的来源:

oriInput = Split(Me.oriInputList.Value, ",")

ReDim toworis(NofLayers - 1)
For p = 0 To NofLayers - 1
toworis(p) = oriInput(p)
Next
这就是我错的地方。我将角度从弧度更改为度,以便在到达
If
语句时角度不是90度

For k = 0 To NofLayers - 1 Step 1

    toworis(k) = toworis(k) * pi / 180

Next

For j = 0 To NofLayers - 1 Step 1


    Angle = toworis(j)




For i = -cntr * 2 + cntrshift To cntr * 2 + cntrshift Step 1
  If Not (Angle = 90) Then
    Exit For
  End If

  '1
  x11 = 0
  x21 = pL
  y11 = i * yshift
  y21 = i * yshift + Tan(Angle) * pL

  '2
  x12 = 0
  x22 = 0
  y12 = i * yshift
  y22 = i * yshift - tW / Cos(Angle)

  '3
  x13 = 0
  x23 = pL
  y13 = i * yshift - tW / Cos(Angle)
  y23 = i * yshift - tW / Cos(Angle) + Tan(Angle) * pL

  '4
  x14 = pL
  x24 = pL
  y14 = i * yshift + Tan(Angle) * pL
  y24 = i * yshift - tW / Cos(Angle) + Tan(Angle) * pL

  Set line2D3 = factory2D1.CreateLine(x11, y11, x21, y21)
  Set line2D4 = factory2D1.CreateLine(x12, y12, x22, y22)
  Set line2D5 = factory2D1.CreateLine(x13, y13, x23, y23)
  Set line2D6 = factory2D1.CreateLine(x14, y14, x24, y24)
Next
如果角度为90,则应创建图层

For l = cntrshift To cntr3 Step 1
  If (Angle <> 90) Then
    Exit For
  End If

  '1
  x11 = l * tW * (sT + 1) + shift * tW
  x21 = x11
  y11 = pW
  y21 = 0

  '2
  x12 = x11
  x22 = x11 + tW
  y12 = 0
  y22 = 0

  '3
  x13 = x11 + tW
  x23 = x13
  y13 = 0
  y23 = pW

  '4
  x14 = x11 + tW
  x24 = x11
  y14 = pW
  y24 = pW

  Set line2D3 = factory2D1.CreateLine(x11, y11, x21, y21)
  Set line2D4 = factory2D1.CreateLine(x12, y12, x22, y22)
  Set line2D5 = factory2D1.CreateLine(x13, y13, x23, y23)
  Set line2D6 = factory2D1.CreateLine(x14, y14, x24, y24)
Next
对于l=cntrshift至cntr3步骤1
如果(角度90),则
退出
如果结束
'1
x11=l*tW*(sT+1)+移位*tW
x21=x11
y11=pW
y21=0
'2
x12=x11
x22=x11+tW
y12=0
y22=0
'3
x13=x11+tW
x23=x13
y13=0
y23=pW
'4
x14=x11+tW
x24=x11
y14=pW
y24=pW
设置line2D3=factory2D1.CreateLine(x11、y11、x21、y21)
设置line2D4=factory2D1.CreateLine(x12、y12、x22、y22)
设置line2D5=factory2D1.CreateLine(x13、y13、x23、y23)
设置line2D6=factory2D1.CreateLine(x14、y14、x24、y24)
下一个

if语句中测试的变量
angle
的值在哪里都没有设置。如果,它是否总是未设置,因此不会触发
?正如JNevill所说,在循环中,你永远不会改变
角度
,因此如果从一开始该值为90,则该条件将永远不会触发。如果该值不是90,则循环将始终立即退出。这包括不完全为90.00000000000000000的浮点/双精度值。。。如果
Angle
是浮点值或双精度值,请使用
Round
功能来避免此问题。抱歉,我本应包含更多内容,但我不想挤满帖子。角度由用户输入设置在这些循环之外。我的目的是根据angle=90与否来选择一个循环(我知道我可以使用select case。我在发布后尝试过,但结果完全相同)@AnsgarWiecherset由用户输入如何设置?结果如何?你还没有解释什么东西没有按你预期的方式工作。请将您的代码设为a,以便我们能够真实地再现您的问题。@AnsgarWiechers我在添加代码以显示角度来源时发现了错误。对不起,我的问题不完整。我明白包含所有内容的逻辑,尽管我认为我很确定角度是如何进入的。谢谢你的帮助