プロが教える店舗&オフィスのセキュリティ対策術

VBAで3次方程式 AX^3+BX-Cの編集を行っているのですが、130行目から170行目の意味がよくわかりません。大変困っています。どなたかお答えしていただけないでしょうか?
全てがわからずとも、なんらかの知識があれば助言お願いしたいです。


Sub test()

100 A = Range("A1").Value

110 B = Range("A2").Value

120 C = Range("A3").Value

130 CC = 0: AC = 0.1

140 XC = CC: GoSub 170

150 YC = BC: XC = AC + CC: GoSub 170: DC = CC: CC = DC - AC * YC / (BC - YC)

160 If Abs(DC - CC) >= 0.000001 Then GoTo 140 Else GoTo 180

170 BC = A * XC ^ 3 + B * XC - C: Return

180 Range("A7").Value = CC

End Sub

A 回答 (3件)

回答No.2 です。



GoSub 170 は、170行目に処理を移動して、Return まで
実行したら戻ってくる、という処理です。
Goto は指定した行に移動するだけなのに対して、GoSub は
移動した後でまた戻ってくるのが特徴です。

なので、140行目からの処理の実行順は
XC = CC
GoSub 170           ← 処理を170行目に移動
BC = A * XC ^ 3 + B * XC - C ← 170行目の処理
Return             ← Retuen なので移動元(GoSub)に戻る
YC = BC            ← GoSub の次の処理(150行目)を実行
(以下省略)

ですね。
    • good
    • 0

コロン(:)は処理の区切りを現します。


VBAでは通常、1行には1処理しか書けませんが、コロンを
付けることで複数の処理を1行に連続して書くことができます。

具体的に言えば、130行目の CC = 0: AC = 0.1 は
CC = 0
AC = 0.1
と2行に分けたのと同じ意味です。


…しかし、クラシックな記法のプログラムですね。
いまどき GoSub 170 なんて処理を見るとは思いませんでした。

この回答への補足

ありがとうございます。GO Subの意味もよくわかりませんので、できれば教えていたたきたいのですが。

補足日時:2015/01/20 00:37
    • good
    • 0

何がわからないの?


言語の文法がわからなくて何をやっているのかが理解できないの?
それともやっていることはわかるけど,なぜそれで3次方程式が解けるのかがわからないの?
前者なら,VBAの文法を検索して見つけたページに書いてあることを理解しろということだ。
後者なら,ニュートン法を検索して見つけたページに書いてあることを理解しろということだ。

この回答への補足

文法の意味がよくわかりません。:は何を表してるんでしょうか?検索してもなかなかでてきません

補足日時:2015/01/19 23:43
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!