• ベストアンサー

EXCELのマクロとのリンク

汎用機でFORTRANを専門にしていました。PCのEXCELでマクロを使用して似たようなことができると聞きました。FORTRANそのものはPCの世界では存在しないとのことです。 例えば1から自然数nまでの級数の和を求めるとします。 この場合n*(n+1)/2を使用せずそろばん式に1から加算していくものとします。nはセルA1に,和はB1に入れるとして アルゴリズム本体をFORTRANで書きますと N=A1の値;I=0;L=0 1 I=I+1 L=L+I IF(I<N)GO TO 1 2 WRITE(*.*)L END これをBASICなどで書き直したとします。EXCELとのリンクの方法を教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
noname#22650
noname#22650
回答No.3

>EXCELとのリンクの方法を教えてください。 この部分の意図がつかめないので、違う角度から回答してみます。 プログラムはVisual Basic Editorを使い、標準モジュール内に書きます。 Excelでプログラムを呼び出すのは、マクロを呼び出す方法と同じです。 以下手順 Excelを起動します。 「ツール」→「マクロ」→「Visual Basic Editor」 Visual Basicが開きます。 「挿入」→「標準モジュール」 "Modure1"が追加され、エディタが開きます。 プログラムを書きます。サブルーチン名は仮に"test"とします。 Sub test() 'ここにプログラムを書きます。 '内容は#1さん#2さんの回答を参考にしてください。 End Sub Visual Basicを閉じてExcelに戻ります。 「ツール」→「マクロ」→「マクロ」 マクロのウインドウが開きます。 先ほど作ったサブルーチン"test"があるはずです。 「実行」で、サブルーチン"test"が実行されます。

tfshy
質問者

お礼

「ツール」→「マクロ」→「マクロ」 上記がEXCELとのリンクと表現していたものです。 VBによる作成法も分かりました。有難うございました。

その他の回答 (2)

  • kamejiro
  • ベストアンサー率28% (136/479)
回答No.2

質問者さんの例のような条件のよる繰り返しは、Do Until や Do While です。 エクセルとのリンク(でいいのか)ですが、 Sub test() s = 0 i = 1 Do Until i > 10   s = s + i   i = i + 1 Loop Range("A1") = s End Sub というプログラムは、A1のセルに「1+2+3+4+5+6+7+8+9+10」の算出結果を入れます。 というのでよろしいのでしょうか?。

tfshy
質問者

お礼

有難うございました。良く分かりました。 FORTRANでは勿論DO loopという書式はあります。BASICよりも歴史が古いのですから(1958年にIBMが発表)。敢えて今では余り使用しないGO TO文を使ってjump先の指定がVBではどうなるのか、そのこともお尋ねした次第です。

  • hana-hana3
  • ベストアンサー率31% (4940/15541)
回答No.1

Range("A1") と指定すれば、任意のセルを指定出来ます。 ”=”の位置(左右)で、代入や値の取得になります。(変数と同じですね) 提示されたFORTRAN風 Sub test() Dim I As Long Dim L As Long Dim N As Long N = Range("A1") I = 0 L = 0 1 I = I + 1 L = L + I If I < N Then GoTo 1 2 Range("B1") = L End Sub 行番号(ラベル)の使用が可能です。 今のプログラミングではGoto/Gosub文の使用を避けて、プログラムのスパゲッティ化しない(させない)、見通しを良くするなどが基本です。 VBA風 Sub SANPLE() Dim n As Long Dim i As Long Dim sum As Long n = Range("A1") sum = 0 For I = 1 To n sum = sum + I Next Range("B1") = sum End Sub

tfshy
質問者

お礼

有難うございました。良く分かりました。 FOR文はFORTRANのDO loopと同じ構造ですね。NEXTは使わずloopの最後は行No.と命令文かCONTINUE statementですが...

関連するQ&A