プログラミング入門Ⅰ (No.11)
[1]プログラムを修正する
(1-1) 既にあるプログラムを開く
前回作ったプログラム「prog1-10.xlsm」を開いてみよう。 既に保存してあるVBA プログラムを開くには、以下のようにする。ドキュメントから開く
① Excel VBA のプログラムは Excel ファイルの中 に入っているので、Excel ファイルをダブルク リックする。 ② プログラム(マクロ)が入っている Excel ファイルを開くと、「セキュリティの警告」が表示され、マクロ は無効にされている。 これは、ウィルスなど悪意があるプログラムを実行しないための機能である。 ③ マクロ(プログラム)を有効にしたいときは、[コンテンツの有効化]ボタンをクリックする。 自分が作ったプログラムなど、安全性に自信がある場合以外は[コンテンツの有効化]をクリックし てはいけない。特に、他人からもらったファイルやネットからダウンロードしたファイルの場合は 気をつける。 Excel 2010 以降では、一度 [コンテンツの有効化]をしておくと、同じファイルであれば次からファ イルを開く際には「セキュリティの警告」は出なくなる。Excel 2007 では、毎回確認の表示が出る。 ④ ネットワーク上にあるファイルの場合は、さらに「セキュリティの警告」が表示されることがある。 これは、ネットワーク上のファイルは知らないうちに改変される可能性があるからである ⑤ 今後もこのファイルが信頼できるというときは[はい]ボタンをクリックする。 ここで [いいえ]をクリックすると、今後も毎回②の「セキュリティの警告」が表示されるようになる。 ⑥ Excel ワークシートが開いたら、Excel のリボンの[開発]タブ > [コード]グループ > [Visual Basic]を選
フォーム/コード/ツールボックスが見えないとき
Visual Basic エディターで、コードウィンドウやフォームウィンドウが表示されていないときがある。ま た、間違えてツールボックスを閉じてしまうときがある。その場合は、以下のようにする。 プロジェクトエクスプローラを使う方法 ① ウィンドウ左上の[プロジェクトエクスプローラ]で、VBAProject をダブ ルクリックするか または、VBAProject の左の+をクリックする。 ② さらにフォームをダブルクリックするか、フォームの左の+をクリッ クする。 ③ さらに UserForm1 をクリックして選択する。 ④ プロジェクトエクスプローラ]上部の、[コードの表示]ボタンをクリックす るとコードウィンドウが表示され、[オブジェクトの表示]ボタンをクリ ックするとフォームウィンドウが表示される。 表示メニューを使う方法 ① [表示]メニュー > 「コード」 を選ぶとコードウィンドウが表示され、[オ ブジェクト]を選ぶとフォームウィンドウが表示される。 ② [表示]メニュー > 「ツールボックス」 を選ぶとツールボックスが表示さ れる。ウィンドウの最大化/最小化
Visual Basic エディターでは、Visual Basic エディターの大きなウィンドウ(親ウ ィンドウ)の中にコードウィンドウやフォームウィンドウが表示されている。ウィン ドウ内のウィンドウ(子ウィンドウ)のサイズ調整には注意が必要である。 親ウィンドウの最大化・最小化ボタンと、子ウィンドウの最大化・最小化 ボタンを間違えないようにする。 子ウィンドウを最大化すると、親ウィンドウ内全体にそれが広がり、他の子ウィンドウが見えなく なる。このときは慌てずに子ウィンドウのサイズを戻す。 [前回のプログラム例] オブジェクトの表示 コードの表示 親ウィンドウのボタン 子ウィンドウのボタン
[2]入力を付け加える
(2-1) プログラムの書き換え
変数a の値は実行時に入力するようにしてみよう。 ① プログラムを1行書き換える。 a=20 ↓ a=inputbox(”a wo irete”) 入 力 変数に値を入力するには「InputBox」関数を使う。 変数に値を入力 →変数名 =
InputBox(″説明文″)
” ”(ダブルクォーテーション)ではさんだ言葉が入力ボックスに表示される。 言葉の内容は何でもよい。言葉には日本語(全角文字)も使える。 ただし、ダブルクォーテーションは半角でなければならない。 実行すると次のような入力ボックスが現れる。 入力ボックス内にキーボードからデータを入力し、[OK]ボタンをクリックするか、 Enter キーを押すと、プログラムにデータが伝えられる。 《フローチャートとの関係例》W = InputBox(”W wo irena!”)
A = InputBox(”A
を入力してね”)
(2-2) 練習問題
問題1
② 変数 b も入力するように書き変えてみよう。説明文は自由に付けてよい。問題2
③ a,b の値を色々入れて実行してみよう。W 入力
A 入力
説明文(2-3) デザインを変える
フォームのデザイン
フォームの色を変えてみよう。 [練習] ユーザーフォームの色を好きなものに変える。 ユーザーフォームの色を変える。 ① フォームを選択する(クリックしておく)。 ② プロパティウィンドウの「BackColor」(背景色)で設定する。 BackColor 欄のをクリックし、現れるウィンドウで[パレット]タブを指定する。コマンドボタンのデザイン
コマンドボタン(CommandButton1)の表に書いてある言葉や色を変えてみよう。 [練習] コマンドボタンの表の言葉を「計算」と変える。フォントや色は好きなものにする。 コマンドボタンの色を変える。 ① コマンドボタンを選択する。 ② プロパティウィンドウの「BackColor」(背景色)で設定する。 コマンドボタンに表示している言葉を変える。 ① コマンドボタンを選択する。 ② プロパティウィンドウの「Caption」で設定する。 コマンドボタンに表示している文字の種類(フォント)やサイズを変える。 ① コマンドボタンを選択する。 ② プロパティウィンドウの「Font」で設定する。 コマンドボタンの文字の色を変える。 ① コマンドボタンを選択する。 ② プロパティウィンドウの「ForeColor」(前景色)で設定する。(2-4) プログラムを名前を付けて保存する
プログラムを上書き保存するのではなく、新しく別の名前を付けて保存しておこう。 ① Excel ワークシートのウィンドウに戻る。 ② リボンの[ファイル]タブ>「名前をつけて保存」を選ぶ。 ③ 保存する場所を自分の「プログラミング入門」のフォルダーに変更する。 ④ [ファイルの種類]ボックス右端のをクリックして、種類を「Excel マクロ有 効ブック」に変更する。 ⑤ [ファイル名]ボックスに、保存するファイル名を入力して保存する。 今回は「prog1-11-1」と名前を付けて保存する。 「プログラミング入門」フォルダー になっていることを確認する。 [ファイルの種類]が「Excel マクロ有効ブック」に なっていることを確認する。 [ファイル名]は「prog1-11-1」と入力する。[3]後判断型繰り返し
(3-1) プログラムの入力
① 現在の Excel ファイルは閉じて、新しく Excel ファイルを開く。 まず、一旦Excel を終了する。
その後、もう一度Excel を立ち上げる。
② Excel ワークシートが開いたら、Excel のリボンの[開発]タブ > [コード]グループ > [Visual Basic]を選 んで、VBE ウィンドウを開く。
③ さしあたり Excel は使わないので、Excel のウィンドウは邪魔にならないように最小化しておく。 ④ Visual Basic Editor の[挿入]メニュー > 「ユーザーフォーム」を選ぶ。
⑤ フォームにコマンドボタン(Command Button)を貼り付ける。
⑥ コマンドボタンをダブルクリックして、コードウィンドウを開く。
⑦「Private Sub CommandButton1_Click( )」と「End Sub」の間の行に次のプログラムを入力する。 dim k as integer dim w as integer w=0 k=1 ← 最後は、数字の「1(いち)」 do w=w+k k=k+1 ← 最後は、数字の「1(いち)」 loop while k<=10 ← 先頭は「1(いち)」ではなく「L(エル)」の小文字 msgbox(w) ⑧ プログラムを実行してみよう。 [実行]メニュー>「Sub/ユーザーフォームの実行」を選ぶ。 または、ツールバーの ボタンをクリックする。 ⑨ コマンドボタンをクリックする。 結果は何が表示されますか? ... [ ] ⑩ プログラム実行を終了する。 [実行]メニュー>「リセット」、またはツールバーの ボタンを選ぶ。 フォーム右上のボタンをクリックしてもよい。(Visual Basic ウィンドウ右上のではない!)
(3-2) プログラムの説明
繰り返し処理は、プログラムでよく現れてくるので、Visual Basic にはそれ専用の命令があります。その 一つが Do~Loop 構造です。後判断型繰り返しでは、Loop の後に繰り返しの条件を書きます。 [このプログラムのフローチャート]Do ~ Loop While 型
[書き方]Do
繰り返したい処理
Loop While 条件
[特 徴] 後判断型繰り返し 条件がYes の間、繰り返す。Do ~ Loop Until 型
[書き方]Do
繰り返したい処理
Loop Until 条件
[特 徴] 後判断型繰り返し 条件がYes になるまで(No の間)、繰り返す。条件の書き方
条件式を書くとき、≦、≧、≠の書き方に注意する。 比較演算子の種類 条 件 数学記号 VB で使う記号 等しい ==
等しくない ≠<>
大きい >>
小さい(未満) <<
以上 ≧>=
以下 ≦<=
はじめw = 0
k = 1
w=w+k
k=k+1
w
出力 No Yes おわり k≦10 繰り返したい 処理 条件 No Yes 繰り返したい 処理 条件 Yes No(3-3) 応用問題
問題1
① 変数 a、b を入力して、a から b までの和を計算するように書き変えてみよう。(LoopWhile 型を使う。) [ヒント] a,b の変数の宣言(dim)をする。 a,b に入力する。(1 回に 1 つずつ入力する。) 元のプログラムは1 から 10 までの和になっているので、a から b までの和になるように書き換え る。(プリント:[No.8]問題(1-2)) [フローチャート] [プログラムコード] 足りない部分を追加。変更するところを修正。
Private Sub CommandButton1_Click() Dim k As Integer Dim w As Integer w = 0 k = 1 Do w = w + k k = k + 1 Loop While k <= 10 MsgBox (w) End Sub
問題2
② a,b の値を色々入れて実行して試してみよう。答はそれで合っているか考えよう。 (1) a= 1, b=10 のとき ... (答: ) (4) a=1, b=100 のとき ...(答: ) (2) a= 0, b=10 のとき ... (答: ) (5) a=-10, b=10 のとき ...(答: ) (3) a= 3, b= 5 のとき ... (答: ) (6) a= 10, b=20 のとき ...(答: ) ③ フォームやボタンのデザインを変えてきれいにしよう。(3-4) プログラムを名前を付けて保存する
④ プログラムを保存しておこう。 Excel ワークシートのウィンドウに戻る。 リボンの[ファイル]タブ>「名前を付けて保存」を選び、[ファイルの種類]を「Excel マクロ有効ブック」に変 更する。[ファイル名]ボックスにファイル名を入力して保存する。
今回は「prog1-11-2」と名前を付ける。(3-5) 発展問題
問 題
前の問題1のプログラムでa=1
,b=1000
を入力してみる。 ① 結果はどうなる? どんなメッセージが出る? ② メッセージの意味はどういうことだろう? ③ なぜそういう結果になるのだろうか? 理由を考えてみよう。 ④ 正しく計算できるようにするにはどうすればよいか?ヒ ン ト
プログラム実行中にエラーが起きると、エラーメッセージが表示される。 エラーメッセージを参考にして、エラーの意味を考える。 [デバッグ]ボタンをクリックすると、プログラム内のエラーが起きた場所を教えてくれる。 プログラムの実行を一旦終了(ツールバーの またはフォームの)してから、 プログラムを修正する。 オーバーフロー(overflow)とは「あふれる」の意味。 ⇒ 変数の型(プリント[No.10−8])について考えてみよう。 エラー番号とエラーの説明 これらはエラーの種類によって変わる。[4]プログラム作成のための Excel の設定
自宅のPC などに Excel がインストールされていれば、学校と同じように VBA プログラムを作成することがで きます。自宅での復習に利用してください。ただし、Excel の設定によってはすぐには使えないかもしれません。 その場合は以下のように、設定を変更してください。(4-1) Excel 2013 の場合
Excel 2010, Excel2016 の場合も、ほとんど同じです。リボンに[開発]タブを表示させる
Excel の初期設定では、リボンに[開発]タブが表示されていないことがあります。 ① リボンの[ファイル]タブを開いて BackStage ビューを表示し、メニューの中の[オプション]をクリックする。 ② [Excel のオプション]ダイアログボックスが表示されるので、「リボンのユーザー設定」を選び、右側のボック スで「開発」にチェック()をつけて、[OK]ボタンをクリックする。セキュリティ設定を変更する
Excel の初期設定では、セキュリティを守るために、マクロ(プログラム)が含まれているファイルを開 くと何も言わずにマクロを無視してしまう設定になっていることがあります。 ① 前ページと同様に、[ファイル]リボンの中の[オプション]をクリックする。 ② [Excel のオプション]ダイアログボックスが表示されるので、「セキュリティセンター」のパネルで[セキュリティセ ンターの設定]ボタンをクリックする。 ③ [セキュリティセンター]ダイアログボックスが表示されるので、[マクロの設定]パネルで、「警告を表示してす べてのマクロを無効にする」にチェック()を付けて選択して、[OK]ボタンをクリックする。 ここで、「警告を表示せずにすべてのマクロを無効にする」が選択してあると、マクロが入った ファイルを開いても何もメッセージがなくマクロは無視されてしまう。 また、「すべてのマクロを有効にする」はセキュリティ上危険なので選択してはいけない。 ④ さらに、[セキュリティセンター]ダイアログボックスの[メッセージバー]パネルで、「ActiveX コントロールやマク ロなどのアクティブコンテンツがブロックされた場合、すべてのアプリケーションでメッセージバーを表示する」に チェック()を付けて選択して、[OK]ボタンをクリックする。 ここで、「ブロックされた内容に関する情報を表示しない」が選択してあると、マクロが入ったフ ァイルを開いても何もメッセージが表示されず、プログラムを有効にすることができない。
Excel 2013 では、マクロを含んだファイルを開く際のセキュリティ確認は、最初の 1 回で認めておくと、同じ ファイルについては次に開くときには確認を求められなくなる。③
④
(4-2) Excel 2007 の場合
リボンに[開発]タブを表示させるには
Excel の初期設定では、リボンに[開発]タブが表示されていないことがあります。 ① [Office]ボタンをクリックしてメニューを表示させ、さらに[Excel のオプション]ボタンをクリックする。 ② [Excel のオプション]ダイアログボックスが表示されるので、「基本設定」のパネルで、「[開発]タブをリボンに 表示する」にチェックをつけて、[OK]ボタンをクリックする。セキュリティ設定を変更するには
Excel の初期設定では、セキュリティを守るために、マクロ(プログラム)が含まれているファイルを開 くと何も言わずにマクロを無視してしまう設定になっていることがあります。 ① 前ページと同様に、[Office]ボタンをクリックしてメニューを表示させ、さらに[Excel のオプション]ボタン をクリックする。 ② [Excel のオプション]ダイアログボックスが表示されるので、「セキュリティセンター」のパネルで[セキュリティセ ンターの設定]ボタンをクリックする。 ③ [セキュリティセンター]ダイアログボックスが表示されるので、[マクロの設定]パネルで、「警告を表示してす べてのマクロを無効にする」にチェック()を付けて選択して、[OK]ボタンをクリックする。 ここで、「警告を表示せずにすべてのマクロを無効にする」が選択してあると、マクロが入った ファイルを開いても何もメッセージがなくマクロは無視されてしまう。 また、「すべてのマクロを有効にする」はセキュリティ上危険なので選択してはいけない。 ④ さらに、[セキュリティセンター]ダイアログボックスの[メッセージバー]パネルで、「すべてのアプリケーションで コンテンツがブロックされたときにメッセージバーを表示する」にチェック()を付けて選択して、[OK]ボタ ンをクリックする。 ここで、「ブロックされた内容に関する情報を表示しない」が選択してあると、マクロが入ったフ ァイルを開いても何もメッセージが表示されず、プログラムを有効にすることができない。③
④
VBA プログラムを含んだファイルを保存するには
Excel の[Office]ボタン>「名前をつけて保存」>「Excel マクロ有効ブック」を選んで保存する。 Excel 2013 と同様に、マクロを含んだファイルの拡張子は「.xlsm」となる。VBA プログラムを含んだファイルを開くには
プログラム(マクロ)が入っているExcel ファイルを開くと、「セキュリティの警告」が表示され、マクロ は無効にされている。 これは、ウィルスなど悪意があるプログラムを実行しないための機能である。 プログラムを有効にしたいときは、[オプション]ボタンをクリックして、[Microsoft Office セキュリティ オ プション]ダイアログボックスを表示させる。 不明なコンテンツから保護する マクロ(プログラム)を無効にしてファイルを開く。 Excel のワークシートは使えるが、入っていたマクロは 使えなくなる。 このコンテンツを有効にする マクロ(プログラム)を使えるようにしてファイルを 開く。 自分が作ったプログラムなど、安全性に自信がある場合以外は「マクロを有効にする」をクリック してはいけない。特に、他人からもらったファイルやネットからダウンロードしたファイルの場合 は気をつける。プログラミング入門Ⅰ (No.11) 宿題
学籍番号: 氏 名:[5]宿 題
問 題
変数a、b を入力して、a から b までの和を計算する。 (3-3) の問題1で作ったプログラムを、Do~Loop Until 型 に書き変えてみよう。 下にフローチャートとコードを書きなさい。 [ヒント] 判断 の Yes/No が逆になる。 条件も変わるので注意!! [フローチャート] [プログラムコード]Private Sub CommandButton1_Click() Dim k As Integer
Dim w As Integer
End Sub
[チェック] 時間がある人は、実際にパソコンでプログラムを入力してチェックしてみよう!
a,b の値を色々入れて実行してみよう。答は「(3-3) Do~Loop While 型」の場合と同じになる?? (1) a= 1, b=10 のとき ... (答: ) (4) a=1, b=100 のとき ...(答: ) (2) a= 0, b=10 のとき ... (答: ) (5) a=-10, b=10 のとき ...(答: ) (3) a= 3, b= 5 のとき ... (答: ) (6) a= 10, b=20 のとき ...(答: )