If statement If语句未退出For循环
如果输入角度为90,我尝试使用此代码退出循环。代码没有做到这一点,但令人沮丧的是,虽然我的代码中没有完全相同的内容,但我成功地使用了相同的格式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
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我在添加代码以显示角度来源时发现了错误。对不起,我的问题不完整。我明白包含所有内容的逻辑,尽管我认为我很确定角度是如何进入的。谢谢你的帮助