你中间那个do循环,只有一个退出条件,就是
If sz = 1 Then Exit Do
很可能由于sz始终不等于1,造成了死循环。你用断点跟踪一下看是不是这回事。
你这个sz被声明为双精度浮点数,由于浮点运算的误差,很可能造成它不等于1。应该把sz声明为整型(sz%)或长整型(sz&)。
还有,你这段:
For i = 0 To 3
If p(i) < pmin(i) And p(i) <> 0 Then
sz = sz * 0
ElseIf p(i) > pmax(i) Then
sz = sz * 0
ElseIf p(i) = 0 Then
sz = sz * 1
Else
sz = sz * 1
End If
Next i
看起来好别扭哦,完全可以简化为:
For i = 0 To 3
If (p(i) < pmin(i) And p(i) <> 0) Or p(i) > pmax(i) Then sz = 0
Next i