エラーの原因については、みき★さんの説明の通りです。 40行目でもうプログラムがないのにENDIFがみつからないぞ!といった感じのエラーです。 エラーの原因は指摘されている行より前にあることもよくあります。 あと別な話ですが、ごまたんさんのプログラムのインデント(字下げ)が中途半端なきがします。 インデントが始まったかと思うといつの間にかもとに戻って無くなっている気が。 ちゃんとインデントを心掛けるとプログラムも見易くなるし、今回のENDIFの抜けも気付き易くなるかもしれません。 FOR,REPERT,WHILE等のループ文やIF~ENDIF等の中は頭1文字字下げすると良いかと。 NEXT,UNTIL,WEND,ENDIF等が出てくるまで字下げはそのままで、ネストしている場合はさらにもう一段字下げ。 こんな感じで。