Document

授業計画
15.アプリケーションの作成
アプリケーションの作成をとおしたプログラムの理解
15.1 確認・提出事項
全レポート(提出遅れ分含む)提出
15.2 授業内容
総復習
15.7 その他
試験は2月4日(火)の1限、第二端末室で行います。
出題範囲は配布したプリントです。
印刷されていないもの(パワーポイントのみで紹介したテクニックなど)は、
テスト範囲に含みません。
語句、演習、例題、レポート等をよく見直しておいてください。
最初のExcelに関する部分も復習しておくこと。
15.3 エクセルの基本
各部名称他
15.4 VBA によるプログラミング
条件判断、分岐、繰り返し命令
コントロール
オブジェクトとプロパティとメソッド
15.5 プログラムによる解析
移動平均法
ピーク解析への応用
15.6 知っておくと便利な小技
※これまでの授業用資料、レポート課題等は
http://cb.apc.kagoshima-u.ac.jp/~higolabo/proex/proex.htm
にアップロードしてあります。
【条件判断、繰り返し命令】
●条件判断
※IF文は、「条件」が満たされていたら、
Then以降の「命令」を実行する。
なお、条件が満たされていない場合は、
※Excelの関数とは文法が異なるので注意! Thenの後ろは実行されない。
【IF文】
If [条件] Then [命令]
●[条件]の例
>
※数学の場合、「以上」は と表現されるが、
=
a=1 :aが1なら
コンピュータの場合は
>=
と表記する。
a>0 :aが0より大きいなら
a<=0 :aが0以下なら
a="演習" :aが文字列"演習"なら
例:If flag="OK" Then a=a+1 :文字列変数flagの内容が"OK"だったら、
aに1を加算
●分岐
【GoTo文】
ラベル名: (ラベル名の後にコロン(:))
GoTo ラベル名 (ここではコロンは不要)
【例題1】
※GoTo文はラベルとセットで使う。
If文と組み合わせることが多い
多用しすぎるとプログラムが
読みにくくなる
ラベル名は何でも良いが、
Sub 条件判断と分岐()
プログラムコマンド(IfやGoToなど)と
Dim a As String
かぶらないこと。
looptop:
a = InputBox("なにか入力してください")
If a = "" Then GoTo looptop
End Sub
変数aが空白なら、GoTo looptopが実行される
●繰り返し命令
【For~Next命令】
あらかじめ決まった回数だけ同じ命令を繰り返す場合に有効。
文法:For [カウンタ]=[初期値] to [終了値] step [増加値]
Next
【例題2】
Sub 繰り返し()
Dim i As Integer
For i = 1 To 3
MsgBox i & "回目"
Next
カウンタはあらかじめ宣言しておく。
iが1から3になるまで、(step [増加値]省略時は)
iを1ずつふやす。
iが3になるまで繰り返す。
End Sub
※Exit Forを使うことで、ループから強制的に抜けることができる。
【演習】For~Next命令を用いて、1~100までの数字をA1~A100に表示する
プログラムを作成しなさい。
ただし、10ループごとにInputboxを表示させ、”終了”と入力がされたら
そこでFor~Next文から脱出するプログラムを作成しなさい。
【オブジェクトとプロパティとメソッド】
【Excelに限らず、Windowsでプログラムを作る上で必ず出てくる言葉が
「オブジェクト」と「プロパティ」と「メソッド」です。】
【オブジェクト】
操作の対象となるもの → ワークシート、セルなど
【プロパティ】
値や属性 → セル内の数値やフォントの大きさなど
基本的には
[オブジェクト].[プロパティ]=値
変数=[オブジェクト].[プロパティ]
といった表記をする
1行1列のCellオブジェクトの
Valueプロパティに「月曜日」を設定
【例1】:Cells(1,1).Value = "月曜日"
値
A1に「月曜日」と表示
Valueプロパティ
セルに入力されている内容を示す
オブジェクト
(正確にはCellsはCellオブジェクトが集まったコレクションという→教科書p.89)
【メソッド】
オブジェクトを操作したり、動作させたりする → InputBoxなど
【例3】:Application.InputBox("InputBoxメソッド")
Applicationオブジェクト「入力ウィンドウを開け」というメソッド
[省略可能]
2
【移動平均法】
以下のようにデータが分散していたとする。
Y
2
2'
1
7
3
3'
5
4'
5'
4
6'
6
X
1、2、3の平均をとって、これを2'とする。
2、3、4の平均をとって、これを3'とする。
・
・
・
これを繰り返すことによって、ランダムノイズを減少させることができる。
移動平均法のサンプルプログラム
A列に並んでいるデータを3点移動平均法によって平滑化し、
B列に表示するプログラム
Dim a As String 'セルのチェック用
Dim aa As Single, bb As Single, cc As Single, ave As Single
'aa,bb,cc セルの読み込み用、ave 平均用
Dim i As Integer 'カウンタ
For i = 2 To 3000
a = Cells(i + 1, 1).Value
If a = "" Then Exit For aa = Cells(i - 1, 1).Value
bb = Cells(i, 1).Value
cc = Cells(i + 1, 1).Value
ave = (aa + bb + cc) / 3
Cells(i, 2).Value = ave
Next
'|1行下(i=2)からはじめて
'|注目点の1行下(i+1)をチェックする
'|これは注目点の上下の行を使用するため
'注目点のひとつ上
'注目点
'注目点のひとつ下
'平均算出
'平均を注目点の隣のセルに書き込み
科学にエクセルを利用する利点は、大量のデータを統計的に処理出来る点である。
計算精度はMathmatica等よりも劣るが、簡単にデータを視覚化することができる。
また、データを入出力できるセルがはじめから用意されていることは、
エクセルでプログラムを作る上での最大の利点である。
おまけ