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