• 検索結果がありません。

コンピュータプログラミング

N/A
N/A
Protected

Academic year: 2021

シェア "コンピュータプログラミング"

Copied!
6
0
0

読み込み中.... (全文を見る)

全文

(1)

6.3. 条件を満たす(満たされない)間は繰り返す(Do Loop ステートメント)

6.3.1. 始める前の注意点

今回作成するマクロは暴走すること(無限ループに陥ること)がたまにある.マクロを正確に 書くことはもちろん大切であるが,こまめにセーブすることで被害を最小限に留めることも心が けてほしい.

6.3.2. 概要

For Next ステートメントは一般に与えられた回数分繰り返すという形で使うことが多い.一方,

繰り返しの回数が確定せず条件を満たすまで繰り返す場合にはほかの方法を用いる.以下に,そ の構文とプログラム例をすべて記す.

注意しなくてはならないのは以下の3点である.

始まりと終わり

Do: 繰り返しの始まりを示す.

Loop: 繰り返しの終わりを示す.

条件の意味

While: 条件式が成立している間は繰り返すことを示す.

Until: 条件式が成立するまで繰り返すことを示す.

条件の評価時期

Do のあとに条件を記す場合:条件を判断してから繰り返す.

Loop のあとに条件を記す場合:繰り返しを行ったあとで条件を判断する.

6.3.3. 例題について

以下では「複利計算をして最初の資産が何年後に目標金額に なるのかを求める」プログラムを作成する.図に示したように,

ワークシートの B1 セルに元金, B2 セルに目標金額,そし て B3 セルに年利率が入っているとする.このとき,目標金 額を超える年数を B4 セルに代入するプログラムを作成する ことにする.(実を言えば,繰り返しを用いなくても書くこと ができる)

(2)

6.3.4. Do Until Loop ステートメント

条件式が成立するまで繰り返す.繰り返している間は条件式は成立していない.条件式は最初 に判断される.

Do Until 条件式

繰り返したい処理(複数行も可)

Loop

Sub DUL()

'Do Until ループの例

Dim mokuhyou As Integer, rishi As Integer Dim genzai As Integer, nensuu As Integer Dim riritsu As Double

nensuu = 0

genzai = Range("B1").Value mokuhyou = Range("B2").Value riritsu = Range("B3").Value

Do Until genzai >= mokuhyou '現在値が目標以上になるまで rishi = riritsu * genzai

genzai = genzai + rishi nensuu = nensuu + 1 Loop

Range("B4").Value = nensuu Range("B5").Value = genzai End Sub

(3)

6.3.5. Do Loop Untilステートメント

条件式が成立するまで繰り返す.繰り返している間は条件式は成立していない.条件式は最後 に判断される.

Do

繰り返したい処理(複数行も可)

Loop Until 条件式

Sub DLU()

'Do Loop Until の例

Dim mokuhyou As Integer, rishi As Integer Dim genzai As Integer, nensuu As Integer Dim riritsu As Double

nensuu = 0

genzai = Range("B1").Value mokuhyou = Range("B2").Value riritsu = Range("B3").Value

Do

rishi = riritsu * genzai genzai = genzai + rishi nensuu = nensuu + 1

Loop Until genzai >= mokuhyou '現在値が目標以上になるまで Range("B4").Value = nensuu

Range("B5").Value = genzai End Sub

(4)

6.3.6. Do While Loop ステートメント

条件式が成立している間は繰り返す.繰り返している間は条件式が成立している.条件式は最 初に判断される.

Do While条件式

繰り返したい処理(複数行も可)

Loop

Sub DWL()

'Do While Loop の例

Dim mokuhyou As Integer, rishi As Integer Dim genzai As Integer, nensuu As Integer Dim riritsu As Double

nensuu = 0

genzai = Range("B1").Value mokuhyou = Range("B2").Value riritsu = Range("B3").Value

Do While genzai < mokuhyou '現在値が目標未満の間は rishi = riritsu * genzai

genzai = genzai + rishi nensuu = nensuu + 1 Loop

Range("B4").Value = nensuu Range("B5").Value = genzai End Sub

(5)

6.3.7. Do Loop While ステートメント

条件式が成立している間は繰り返す.繰り返している間は条件式が成立している.条件式は最 後に判断される.

Do

繰り返したい処理(複数行も可)

Loop While条件式

Sub DLW()

'Do Loop While の例

Dim mokuhyou As Integer, rishi As Integer Dim genzai As Integer, nensuu As Integer Dim riritsu As Double

nensuu = 0

genzai = Range("B1").Value mokuhyou = Range("B2").Value riritsu = Range("B3").Value

Do

rishi = riritsu * genzai genzai = genzai + rishi nensuu = nensuu + 1

Loop While genzai < mokuhyou '現在値が目標未満の間は Range("B4").Value = nensuu

Range("B5").Value = genzai End Sub

(6)

6.3.8. この節のまとめ

条件を満たすまで(もしくは条件を満たしている間ずっと)繰り返すというタイプの計算(言 い換えれば,繰り返しの回数が条件によって決まる計算)が必要なケースはとても多い.そのた めに,この節の内容は重要になる.

While と Unitil は一方さえきちんと使えれば他方はその否定なので使わない機能である.例

えば, “While A” を Until を使って書くなら, “Until Not(A)” となる.なぜふたつの機能が用

意されたのかはわからないが,While (~の間ずっと)と Unitl (~するまでずっと)と,英語 の意味がそのまま言語として使えるのでわかりやすさはあるかもしれない.

6.3.9. 練習問題

次のプロシージャを作りなさい.

ワークシートの D 列にたくさん数値が入っているとき.D1 から列方向にむけて検索を行い,

値が 12 である最初のセルを見つける.

初項2公比1.2の等比数列のうち 20 以下の数をE1 セルから列方向に代入する.

一つ目の練習問題に数字がなくなったら中止する機能を追加したもの.

「はい」を押すまで説得し続けるマクロ(MsgBox の機能について調べてみること).

以下の式を用いて,円周率の近似値を計算する.



 

     

 

 9 1 7 1 5 1 3 1 1 4 1 2

) 1 ( 4

1

1

i

i

i

参照

関連したドキュメント

越欠損金額を合併法人の所得の金額の計算上︑損金の額に算入

やすらぎ荘が休館(食堂の運営が休止)となり、達成を目前にして年度売上目標までは届かな かった(年度目標

前ページに示した CO 2 実質ゼロの持続可能なプラスチッ ク利用の姿を 2050 年までに実現することを目指して、これ

 貿易統計は、我が国の輸出入貨物に関する貿易取引を正確に表すデータとして、品目別・地域(国)別に数量・金額等を集計して作成しています。こ

 今年は、目標を昨年の参加率を上回る 45%以上と設定し実施 いたしました。2 年続けての勝利ということにはなりませんでし

愛知目標の後継となる、2030 年を目標年次とした国際目標は現在検討中で、 「ポスト 2020 生物

ところで,基金の総額が増減した場合における措置については,つぎのご

このエフピコでのフロアホッケー 活動は、エフピコグループの社員が 障がいの有無を超えて交流すること を目的として、 2010