コンピュータシミュレーション 演習(2008年度)

コンピュータシミュレーション
演習(2009年度)
東洋大学工学部環境建設学科
吉野 隆
2009年度から休日も授業
• カレンダーによれば来週(10/12)と11/23は休
日ですが,今年度から講義日になっています.
• 今のところ,両日とも授業を行う予定です.
第一週
Excel VBA
はじめに
• 春学期の「コンピュータシミュレーション」とは
異なり,「コンピュータシミュレーション演習」で
は,コンピュータを操作して実際にシミュレー
ションの結果を得る作業を行う.
• 最初の数回は Excel のマクロを用いた数値計
算の方法について学ぶ.マクロの使用方法を
学ぶことで,作業効率があがるはずである.
• 後半は Mathematica を用いたシミュレーショ
ンについて検討する.
マクロ
• Excel にはユーザーが複雑なマクロ(ユー
ザーが定義した手続き)を構築するための環
境が準備されている.
• この環境を Visual Basic Editor (VBE)という.
• この環境のもとで使用するマクロ言語を
Visual Basic for Applications (VBA) という.
文法について
• この授業はプログラミング言語を学ぶ授業では
なく,プログラミング言語を用いて計算結果を出
す授業である.
• そのために,言語の文法や慣用的な使い方につ
いてはほとんど触れない.
• 若干まとめた資料として,少し古くなりつつある
が2007年度までの演習Ⅲで用いてたものがある.
必要ならばそれを参考にすること(PDFファイル
は
http://endeavor.eng.toyo.ac.jp/~yoshino/lecture/
enshu3/ex3-VBA.pdf).
VBE を使用する(Excel 2007)
• Excel 2007 で VBE を用いる場合には,以下の
3つの手順を実行しなければならない.
1. Office ボタンをクリックして「Excel のオプション」
をクリックする.
2. 「開発タブをリボンに表示する」をチェックして窓
を閉じる.
3. 「開発」タブをクリックして,「Visual Basic」ボタン
をクリックする.
VBE を使用する(Excel 2003)
• Excel 2003 で VBE を用いる場合には,「ツー
ル」メニューから「マクロ」の「Visual Basic
Editor」を選択する.
VBAによるマクロの制作(1)
• 標準モジュールを追加
することによって,新し
いプロシージャ(マクロ
のこと)が作成できる状
態になる.
• そのためには,「ユー
ザーフォームの挿入」ボ
タン脇の▼をクリックし
て,「標準モジュール」を
選ぶ.
ここをクリッ
クする.
VBAによるマクロの制作(2)
• 新たに出現したテキスト入力窓(赤い枠)にマ
クロを記述する.
簡単なマクロの制作
• 以下に示すような,簡単なマクロを作ってみよ
う.ただし以下のことに注意.
• 英語とスペースは半角で.2行目の行頭のス
ペースはTABキーで.
Sub あいさつ()
MsgBox ("こんにちは")
End Sub
マクロの実行
• VBE から実行する場合には,「Sub/ユー
ザーフォームの実行」ボタンをクリック.
• Excel から実行する場合は以下のとおり.
– Excel 2007の場合.
1. 「開発」タブまたは「表示」タブで「マクロ」ボタンをク
リック
2. 「マクロの表示」をクリックして実行したいマクロを選
び「実行」ボタンをクリック.
– Excel 2003 からは,「ツール」メニューの「マクロ」
で「マクロの実行」(だったと思います).
マクロの定義文
• マクロは「Sub マクロの名前()」と表示された行
から始まり,「End Sub」を表示された行で終了
する.
• 上の2行の間に, Excel にさせたい命令を1行
ずつ記述してゆく.
• 今回は「MsgBox “文字列”」とすることで,窓に
文字列を表示するマクロを作成した.
練習問題
1. “こんにちは” を “おはよう” に変えてみなさ
い.
2. MsgBox 関数(関数ってなんだ?)をもう1行
加えて何が起こるのか確かめなさい.
繰り返し計算
• VBA では繰り返し計算に For ステートメントを
用いることが多い.以下はその例.
Sub くりかえし()
For i = 1 To 10
ActiveCell.Offset(i - 1).Value = i
Next i
End Sub
For ステートメント
• 「For 変数=初期値 To 終了値 Step 増分」とい
う行で始まり,「Next 変数」で終わる部分を
For ステートメントと呼ぶ.
• For ステートメントは,変数を初期値から増分
ずつ増やしながら終了値になるまでステート
メント内の処理を繰り返す作業である.
• 今回はアクティブなセルから順に下のセルに
向けて1から10まで設定するマクロを作成した.
ActiveCell.Offset(i).Value
• ActiveCell とはクリックしたセルのこと.
• ActiveCell.Offset(i) とは ActiveCell の下の i 番
目にあるセルのこと.
• ActiveCell.Offset(i).Value とは,
ActiveCell.Offset(i) のセルの値のこと.
• ActiveCell.Offset(i).Value = i とは,クリックした
セルから i だけ下にあるセルの値を i に設定
すること.
練習問題
1. 繰返しを 1 から 20 までに変えなさい.
2. 繰返しを 0 から 20 までの偶数に変えなさい.
3. 繰り返しの 3 から 30 までの3の倍数に変え
なさい.
4. 繰返しを 0 から 1 まで 0.05 おきになるように
変えなさい.