プログラミング入門Ⅰ (No.12)

Ⅰ12-1
プログラミング入門Ⅰ (No.12)
[1]前回の復習
先週作成したプログラム「prog1-11-2」を開く。
① ドキュメント>プログラミング入門 のフォルダを開く。
② prog1-11-2 の Excel ファイル(prog1-11-2.xlsm)を開く。
「セキュリティの警告」で「このコンテンツを有効にする」を選択する。
③ Excel の[開発]リボン > [コード]グループ > [Visual Basic]を選んで、VBE ウィンドウを開く。
④ さしあたり Excel は使わないので、Excel のウィンドウは最小化()しておく。
(1-1) 入力と繰り返し処理
入
力
変数に値を入力 .......................................
変数名 = InputBox(″説明文″)
後判断型繰り返し
条件が Yes の間繰り返す ........................
繰り返したい
処理
Do
繰り返したい処理
Loop While 条件
Yes
条件
No
条件が Yes になるまで繰り返す .............
Do
繰り返したい処理
Loop Until 条件
繰り返したい
処理
No
後判断型繰り返しプログラム
変数 a、b を入力して、a から b までの和を計算するプログラム
[フローチャート]
[プログラムコード]
はじめ
a 入力
b 入力
w=0
条件
Yes
Private Sub CommandButton1_Click()
Dim k As Integer
Dim w As Integer
Dim a As Integer
Dim b As Integer
a = InputBox(”a を入力して”)
b = InputBox(”b を入力して”)
k=a
w = w +k
k = k+1
Yes
k≦b
No
w 出力
w = 0
k = a
Do
w = w + k
k = k + 1
Loop While k <= b
MsgBox (w)
End Sub
おわり
[チェック]
a,b の値を色々入れて実行して試してみよう。
① a= 1, b=10 のとき ......(答:
)
② a= 4, b= 6 のとき .......(答:
)
③ a= 10, b= 10 のとき ...(答:
)
④ a=1, b=100 のとき .............(答:
⑤ a=-10, b=10 のとき .........(答:
⑥ a= 8, b= 5 のとき ...............(答:
)
)
)
Ⅰ12-2
(1-2) 無限ループ時の対処
繰り返しが無限に続く処理を無限ループといいます。無限ループを実行すると、コンピュータはそれにかかりっ
きりになって、他の仕事ができなくなってしまい、何も反応しなくなることがあります。わざと無限ループを作る
人はいないでしょうが、さまざまな原因で無限ループのプログラムになってしまうことがあります。
• 繰り返しの終了条件を付け忘れた。
• 終了条件の書き方を間違えた。
• 繰り返しの中の計算を間違えた。
こういうことがないように、実行する前によくチェックしましょう。
もしも無限ループに入ってしまったら、次の方法で中断させることができるときがあります。試してください。
 Ctrl + Break

Esc
キーを押す。
キーを押す。
これらでもだめなときは次も試してください。
 UserForm の右上のボタンをクリックする。
 VBE の右上のボタンをクリックする。
 Excel の右上のボタンをクリックする。
これらでもだめなときは次も試してください。
 Ctrl + Shift + Esc
キーを押して、Windows タスクマネージャーを表示させ、Excel を終了させる。
これらの方法で中断させた場合、最悪、そのプログラムは保存されずに終了してしまうことがあります。プログラ
ム作成中は、ときどき上書き保存(以下の項を参照)しておくとよいでしょう。
(1-3) プログラム編集操作
プログラムを入力・編集する際に、コピー&ペースト(貼り付け)、カット(切り取り)&ペーストができます。
① コピーまたは切り取りしたい範囲を選択する。
② その場で右クリック、または[編集]メニューをクリックして
「コピー」か「切り取り」を選ぶ。
③ 貼り付けたい先でクリックしてカーソルを移動し、
その場で右クリック、または[編集]メニューをクリックして
「貼り付け」を選ぶ。
(1-4) プログラムの上書き保存
プログラムを修正した後、名前を変えずに保存するときは、上書き保存すればよい。
 Excel ワークシートのウィンドウに戻り、
リボンの[ファイル]タブ>「上書き保存」を選び、Excel ファイルを上書き保存する。
 Visual Basic Editor のツールバーにある[上書き保存]ボ
タン
をクリックしてもよい。
Ⅰ12-3
[2]前判断型の繰り返し
前回、後判断型の繰り返しを学んだので、今回は前判断型の繰り返しプログラムを作ってみよう。
(2-1) 前判断型繰り返しの書き方
後判断型と同様に、前判断型にも Yes/No の付き方で 2 種類に分けられる。
Do While ~ Loop 型
[書き方]
Do While 条件
繰り返したい処理
Loop
条件
Yes
No
繰り返したい
処理
[特 徴]
 前判断型
 条件が Yes の間、繰り返す。
Do Until ~ Loop 型
[書き方]
Do Until 条件
繰り返したい処理
Loop
[特 徴]
 前判断型
 条件が Yes になるまで(No の間)、繰り返す。
条件
Yes
No
繰り返したい
処理
Ⅰ12-4
(2-2) プログラムの入力
① ユーザーフォームにコマンドボタン(Command Button)を1つ付け加える。
② コマンドボタン表面の言葉は、プロパティウィンドウの Caption で決まっている。
前 の コ マ ン ド ボ タ ン (CommandButton1) の Caption を 「 後 判 断 」 、 付 け 加 え た コ マ ン ド ボ タ ン
(CommandButton2)の Caption を「前判断」と変更する。
 コマンドボタンに表示している言葉
⇒ Caption プロパティ
 コマンドボタンに表示している文字の種類(フォント)やサイズ ⇒ Font プロパティ
 コマンドボタンの色 ⇒ BackColor プロパティ
 コマンドボタンの文字の色 ⇒ ForeColor プロパティ
③ 付け加えたコマンドボタン(CommandButton2)をダブルクリックして、コードウィンドウを開く。
④「Private Sub CommandButton2_Click( )」と「End Sub」の間の行にプログラムを入力する。
Ⅰ12-5
前判断型繰り返しプログラム
変数 a、b を入力して、a から b までの和を計算するプログラム
[フローチャート]
[プログラムコード]
Private Sub CommandButton2_Click()
Dim
Dim
はじめ
a 入力
b 入力
Yes
No
w 出力
おわり
End Sub
[チェック]
a,b の値を色々入れて実行して試してみよう。後判断の結果 12-1 と同じになるはず・・・?
① a= 1, b=10 のとき ......(答:
)
④ a= 1, b=100 のとき ............(答:
)
② a= 4, b= 6 のとき .......(答:
)
⑤ a=-10, b=10 のとき .........(答:
)
③ a= 10, b= 10 のとき ...(答:
)
⑥ a= 8, b= 5 のとき ...............(答:
)
 プログラム作成したら、ファイルを名前を付けて保存しておく。
ファイル名は
prog1-12-1.xlsm とする。
① Excel ワークシートのウィンドウに戻る。
② リボンの[ファイル]タブ>「名前をつけて保存」を選ぶ。
③ 保存する場所を「プログラミング入門」のフォルダに変更する。
④
[ファイルの種類]ボックス右端のをクリックして、種類を「Excel マクロ有効ブ
ック」に変更する。
⑤ Excel ファイルに名前を付け保存する。
Ⅰ12-6
(2-3) 発展問題
問題1
前判断繰り返しと後判断繰り返しで答が違う場合があるか?
上の2つのプログラムの結果(チェックで計算した値)を比べてみよう。
違うことがあるとしたらどんな場合か? また、答が変わる理由はなぜだろう?
 どんな場合に違う?
 違う理由はなぜ?
問題2
a= 1 として、b の値を増やしていったとき、b がいくつになるまで計算できるだろうか?
そのときの答はいくつ? また、計算できなくなる理由はなぜだろう? さらに、その解決方法は?
 b がいくつまでできる? ..... [
] ⇒ そのときの和はいくつ? ............................ [
]
 b がいくつからできない? . [
] ⇒ 本当ならそのときの和は何になるはず? .. [
]
 どんなエラーメッセージが表示される?その意味は何だろう?
 エラーが起きる理由は?
 エラーの解決方法は?
(解決のヒント) プリント No.10 変数の型
エラーメッセージ
 プログラム実行中にエラーが起きると、エラーメッセージが表示される。
エラーメッセージを参考にして、エラーの意味を考える。
エラー番号とエラーの説明
これらはエラーの種類によって変わる。
オ ー バ ー フ ロ ー (overflow) と は
「あふれる」の意味。
[デバッグ]ボタンをクリックすると、プログラム内のエラーが起きた場所を教えてくれる。
プログラムの実行を一旦終了(リセット )してから、プログラムを修正する。
Ⅰ12-7
[3]練習問題
(3-1) 掛け算を足し算の繰り返しで(後判断型)
① 現在の Excel ファイルは閉じて、新しく Excel ファイルを開く。
 まず、一旦 Excel を終了する。その後、もう一度 Excel を立ち上げる。
② Excel ワークシートが開いたら、Excel のリボンの[開発]タブ > [コード]グループ > [Visual Basic]を選
んで、VBE ウィンドウを開く。
③ さしあたり Excel は使わないので、Excel のウィンドウは邪魔にならないように最小化しておく。
④ Visual Basic Editor の[挿入]メニュー > 「ユーザーフォーム」を選ぶ。
⑤ フォームにコマンドボタン(Command Button)を貼り付ける。
⑥ コマンドボタンをダブルクリックして、コードウィンドウを開く。
⑦ 次のフローチャートをプログラムにしてみよう。フローチャートの空白部分は自分で埋める。
[問題]変数 M、N を入力して、M×N の答を足し算で求めるプログラム
【参考:No.8 (1-3)】
• M を N 回繰り返して足す。つまり、M+M+・・・+M を計算する。
• 答を入れる変数として S、足した回数を数えるカウンタ用変数として k を使う。
[フローチャート]
[プログラムコード]
はじめ
M 入力
N 入力
Private Sub CommandButton1_Click()
Dim M AS
Dim N As
Dim S As
Dim k As
k = k+1
No
Yes
S 出力
おわり
End Sub
[チェック]
a,b の値を色々入れて実行してみよう。答は M×N と同じになるはずだが・・・。
答を暗算でチェックして、○×を□に書こう。
① M= 2, N= 8 のとき .........(答:
)
② M= 4, N= 6 のとき .........(答:
)
③ M= 8, N= 6 のとき .........(答:
)
□
□
□
④ M= 5, N= 1 のとき...........(答:
)
⑤ M= 0, N= 10 のとき.........(答:
)
⑥ M= 10, N= 0 のとき.........(答:
)
□
□
□
 プログラムができたら、ファイルを名前を付けて保存しておく。(ファイル名は ⇒ prog1-12-2.xlsm)
Ⅰ12-8
(3-2) 割り算を引き算の繰り返しで(前判断型)
① 現在のフォームにコマンドボタン(Command Button)を1つ付け加える。
② 前 の コ マ ン ド ボ タ ン (CommandButton1) の Caption を 「 掛 け 算 」 、 付 け 加 え た コ マ ン ド ボ タ ン
(CommandButton2)の Caption を「割り算」と変更する。
③ 付け加えたコマンドボタン(CommandButton2)をダブルクリックして、コードウィンドウを開く。
④ 次のフローチャートをプログラムにしてみよう。フローチャートの空白部分は自分で埋める。
[問題]変数 a、b を入力して、a÷b の答を引き算の繰り返しで求めるプログラム
【参考:No.8 宿題】
• 余り用の変数を amari、回数を数えるカウンタ用変数を kai とする。
• まず、amari に a を代入しておき、amari から b を引けなくなるまで繰り返して引く。
引いた回数を kai に計算しておく。
[フローチャート]
[プログラムコード]
Private Sub CommandButton2_Click()
Dim a AS
Dim b As
Dim amari As
Dim kai As
はじめ
a 入力
b 入力
No
Yes
kai, amari
出力
おわり
End Sub
[チェック]
a,b の値を色々入れて実行してみよう。
答を暗算でチェックして、○×を□に書こう。
① a= 20, b= 6 のとき ....... (答:
)
② a= 5, b= 5 のとき ......... (答:
)
③ a= 3, b= 8 のとき ......... (答:
)
□
□
□
④ a= 0, b= 5 のとき .........(答:
)
⑤ a= 8, b= 0 のとき .........(答:
)
 プログラムができたら、ファイルを上書き保存しておく。(ファイル名は ⇒ prog1-12-2.xlsm)
□
□
締切:Ⅰ12-9
7/4(土)
プログラミング入門Ⅰ (No.12) 宿題
学籍番号:
[4]宿
井芹研究室前の箱へ
氏 名:
クラス:
題
[問題] 変数 M、N を入力して、M×N の答を足し算で求めるプログラム(前判断型)
(3-1) で作ったプログラムを、前判断型 に書き変えてみよう。
Do While 型でも Do Until 型でも、どちらでもよい。
下にフローチャートとコードを書きなさい。
[フローチャート]
[プログラムコード]
Private Sub CommandButton1_Click()
End Sub
[チェック] 時間がある人は、実際にパソコンでプログラムを入力してチェックしてみよう!
a,b の値を色々入れて実行してみよう。答は「(3-1) 後判断型」の場合と同じになる??
答を暗算でチェックして、○×を□に書こう。

① M= 2, N= 8 のとき .........(答:
)
② M= 4, N= 6 のとき .........(答:
)
③ M= 8, N= 6 のとき .........(答:
)
□
□
□
今日の授業の内容に関する質問・感想を書いてください。
④ M= 5, N= 1 のとき...........(答:
)
⑤ M= 0, N= 10 のとき.........(答:
)
⑥ M= 10, N= 0 のとき.........(答:
)
□
□
□