ここから本文です

以下のマクロで計算しているのですが、Loopに対応するDoが存在しないと表示されま...

wat********さん

2011/6/2410:52:44

以下のマクロで計算しているのですが、Loopに対応するDoが存在しないと表示されます。DoもLoopも指定しているのに何故でしょうか?VBA初心者なので四苦八苦しております。回答頂けないでしょうか?

Sub Orderparamet

ercalc()
Application.ScreenUpdating = False
Dim x0, y0, x1, y1, f, fcos, fsin, c, b, a, q, r, w As Double
Dim i, n As Long
Dim Z As Long
r = 0.27
Z = Range("N6").Value
For i = 2 To Z
f = 0
n = 0
fcos = 0
fsin = 0

x0 = Cells(i, 6)
y0 = Cells(i, 7)
[f2].Select
Do While ActiveCell.Value <> ""
If ActiveCell.Value = x0 And ActiveCell.Offset(0, 1).Value = y0 Then
ActiveCell.Offset(1, 0).Activate
Else
x1 = ActiveCell.Value
y1 = ActiveCell.Offset(0, 1).Value
d = ((x1 - x0) ^ 2 + (y1 - y0) ^ 2) ^ (1 / 2)
If d < 3 * r Then
b = (x1 - x0)
a = (y1 - y0)
c = (a ^ 2 + b ^ 2) ^ (1 / 2)
n = n + 1
Else
ActiveCell.Offset(1, 0).Activate
End If

End If

If -1 > Cos(b / c) And Cos(b / c) > 1 And -1 > Sin(a / c) And Sin(a / c) > 1 Then
ActiveCell.Offset(1, 0).Activate
Else

If a > 0 Then
If b > 0 Then
w = WorksheetFunction.Acos(b / c)
Else
w = WorksheetFunction.[pi()-Asin(a / c)]
End If
Else
If b > 0 Then
w = WorksheetFunction.Asin(a / c)
Else
w = WorksheetFunction.[pi()-Asin(a / c)]
End If

End If

q = 6 * w
fcos = fcos + Cos(q)
fsin = fsin + Sin(q)
ActiveCell.Offset(1, 0).Activate

Loop
f = (fcos ^ 2 + fsin ^ 2) ^ 0.5
If n >= 3 Then
Cells(i, 8) = f / n
Else
Cells(i, 8) = 0
Cells(i, 8).Font.ColorIndex = 3
End If
Cells(i, 13) = n
Next i
[f2].Select
Application.ScreenUpdating = True
End Sub

補足rivoisuさん回答ありがとうございます。恐縮ですがどこかがEndIF足りないかわかりますか?

閲覧数:
13,463
回答数:
1

違反報告

ベストアンサーに選ばれた回答

riv********さん

編集あり2011/6/2412:28:46

if と endif の対応が取れていません。Endifが足りません。
だからLoopがIfのネストの中に入ってしまってDoとの対応が取れていないと判断されました。

この種のエラーを防ぐにはきちんとインデントをする。
エラーがでたらインデントを確認する。
そういう癖をつけるようにしましょう。

*-------*
>どこかがEndIF足りないかわかりますか
プログラムのロジックまで見てないのでなんとも言えませんが、
中程の
If -1 > Cos(b / c) And Cos(b / c) > 1 And -1 > Sin(a / c) And Sin(a / c) > 1 Then
に対応するEndIFが足りないようです。
Loop文の直前ではないでしょうか

質問した人からのコメント

2011/6/24 13:39:01

ありがとうございました。確かにLOOP前に抜けてました。すみませんでした。

あわせて知りたい

この質問につけられたタグ

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる