環境情報処理第二(建築系)

受講者
 熊本大学工学部環境システム工学科(建築系)1年次
開講期
 後期,月曜日3時限
単位数
 選択必修,2単位
担当教官
 山成 實(工学部環境システム工学科)


VBA のプログラミング

目次

1.プログラミングとは

2.プログラミングの基礎知識

(1)変数

(2)定数

(3)配列

(4)演算子

3.制御構文

(1)If文 条件判断

(2)For Next文 ループ構造

4.関数

(1)Sqr 関数

(2)Int 関数

5.セルの値を取得する,セルに値を記入する

6.その他のステートメント

(1)Exit ステートメント

 


大目次へ戻る

本文

1.プログラミングとは

目次へ


 本講義では VBA によるプログラミングを行う.コンピューターに仕事をさせる手順を記述したもの

がプログラム,プログラムを作ることをプログラミングと言う.また,VBAでは,プログラムのことを

コードと呼ぶ.

 VBA の説明の前に,コンピューターを使って問題を解決する手順を考えて見よう.これは次ぎのよう

な手順となる.

1. 問題の分析

 コンピューターに仕事をさせようとする際,利用者自身が解決しようとする問題を具体的に分析して

おかなけならない.これには与えるデータの種類,欲しい結果,計算方法等が含まれる.

2. 計算手順の検討

 プログラムを組む(プログラミング)のためには,問題解決のための手順をあらかじめ示したおかな

ければならない.このためにはフローチャート等を使って図化すると手順が整理され理解が容易になる.

3. プログラムの作成

 計算手順が定まったならば,それに従ってプログラムを作る.このためにはプログラムを記述する言

語(プログラミング言語)の知識が必要である.

4. 実行

 プログラミングしたプログラムを実行させる.タイプミスや文法上の間違いがあると,プログラムは

動かない.エラーではなくても実行結果が全く間違ったものとなるかもしれない.そんなときは再度プ

ログラムの修正を行う.このことをデバグ(debug)という.文字どおり虫取りである.

 

2.プログラミングの基礎知識

目次へ


 
VBA によるプログラミングを行うために,ここでは基本的な事項を説明する.

 

(1)変数

目次へ

 変数とは,簡単に言えば,データの格納場所につけた名前である.

 プログラムの中で何らかのデータを保持するためには,コンピュータのメモリ上にその値を格納して

おく必要がある.メモリには,アドレス(番地)といって,位置を特定するための番号のようなものが

ついているのであるが,この番号をいちいち覚えておくのはなかなかたいへんである.

そこで,アドレスに分かりやすい名前をつけて,プログラムの中から操作することができるようにした

ものが変数である.

 分かりやすくいえばメモリが下駄箱,変数は下駄箱につけた名札...という感じである.

 

                   図2−1 変数の概念

 変数には,覚えやすいように好きな名前を付けることができる.

 a 〜 z ,あ〜ん,漢字などの文字とアンダスコア( _ )を使うことができ,スペースや記号は使う

ことができまない.また,Visual Basicの予約語も変数名には使うことができまない.予約語とは,

Sub,Function,If,Select,End ・・・ のように,Visual Basicのプログラム内で特別の意

味を持つ語のことを言う.予約を変数として使おうとするとエラーが発生してしまう.

 ネーミングの方法に特に決まりはないが,変数名を見ればその用途が分かるようにな付けかたをして

おくと,あとあと見やすいプログラムになる.

 変数は「入れ物」であって,中に入ってる値そのものではない.下駄箱の中の靴をなんどでも好きな

靴に入れ替えることができるように,変数も何度でも自由に値を入れ替えることができる

 

(2)定数

目次へ

 定数とは,プログラム中で変更されない値をつけた名前のことを言う.基本的には変数と似てい

るが,定数の値をプログラムの実行中に入れ替えることは一切できない.いわが貸切の下駄箱のよう

なものである.

 定数は,



	Const 定数名 = 値 



の形で宣言する.

 

(3)配列

目次へ

 Visual Basicには,配列型変数という概念がある.

 変数は下駄箱につけた名札である...という説明をしたが,同じように考えると,配列は下駄箱

全体を1つのまとまりとして扱うものである.

 配列に含まれるデータ(下駄箱の例でいうなら個々の箱)のことを配列の要素といい,頭から順に

連番を振って管理する.個々の下駄箱に振られた連番は配列の添え字(インデックス)と呼ばれる.

 配列型変数を使うには,配列型変数を使うことを宣言しなければならない.配列型変数を宣言する

には,以下の書式を使う.



	Dim 配列名(要素数)



たとえば,9つの要素をもつ配列Getabakoを宣言するには,次のように記述する.



	Dim Getabako(8)



 配列の個々の要素には,配列名(インデックス)でアクセスします.たとえば下の図でNo.3の下駄

箱にアクセスするには,Getabako(3)と記述すればいいというわけです.

                               

                     図2−1 配列の概念

 配列の各要素にデータを格納する場合は,次のように記述する.



	Getabako(0) = "大きな靴"

	Getabako(1) = "小さな靴"

	Getabako(2) = "クサイ靴"



 

 配列に関する詳しい説明は,ここを参照.

 

(4)演算子

目次へ

 Visual Basicでは,加減乗除をはじめとした,さまざまな計算を行うことができる.

 そもそもプログラムとは計算の繰り返しであるから,その計算が出来なくては話にならない.足す・

引く・割る・掛けるなどの計算の指示を与える記号のことを演算子と呼ぶ.足し算なら+,引き算なら

−,割り算なら÷,掛け算なら×...というのが演算子であるが,Visual Basicにはそれぞれ固有

の記号が用意されている.

 演算子には大きくわけて,算術演算子,比較演算子,文字列連結演算子,論理演算子の四つの種

類がある.以下に,比較的使用頻度の高い,算術演算子と文字列連結演算子の説明を記す.

算術演算子

算術演算を行うときに使う演算子である.

 名前   機能  使用例  結果
 +演算子   足し算を行う  1 + 1  2
 -演算子   引き算を行う  1 - 1  0
 *演算子   掛け算を行う  1 * 1  1
 /演算子

  割り算を行う

  (結果を小数点で返す)

 10 / 3  3.3333
 \演算子

  割り算を行う

  (結果を整数で返す)

 10 \ 3  3
 Mod演算子   割り算を行い,余りを得る  10 Mod 3  1
 ^演算子   べき乗を求める  2 ^ 2  4

 

文字列連結演算子

文字列の連結を行うときに使う演算子です.

&演算子演算子がある.どちらも同じようにつかわれるが,+演算子は算術演算子にも

使われるため,文字列の連結には&を使うようにした方が読みやすいプログラムを書くこと

が出来る.

【使用例】

 

		"でかい" & "くつ" = "でかいくつ"

		

3.制御構文

目次へ

(1)If文 条件判断

目次へ

 プログラムを書いていると,その時々の状況によって実行する処理を分担したい場面がしばしば発生

する.

「肉まんがあれば肉まんを買う.売り切れならあんまんを買う」

といった選択を迫られることは,実際の生活にもよくあることである.

 Visual Basicではこんなとき,If文を使う.

 If文は条件判断構文と呼ばれ,「○○ならAの処理を行う,それ以外の場合Bの処理を行う」という具

合に与えられた条件に基づいて状況を判断し,指定された処理を実行する仕組みになっている.

【例】



	If1 肉まんがある2 Then

		

		肉まんがある3



	Else4



		あんまんを買う5



	End If6



[コードの意味]

1.If と Then で条件式を囲む

2.条件判断式を記述

3.2.の条件に当てはまる場合に行う処理を記述

4.条件に当てはまらない場合,Else以下を実行

5.条件に当てはまらない場合に行う処理を記述

6.ここでIf文が終わっていることを明示的に記述

 

(2)For Next 文 ループ構造

目次へ

 同じ処理を何度も繰り返し行わせたいような場合には,ループ構造を使う.

 ループ構造には,大きく分けて,For Next構文Do Loop構文の2つがある.ここでは,頻繁に使

用するFor Next構文を説明する.

 For Next構文は,主としてあらかじめ処理を繰り返す回数が分かっている場合に用いられる.

【For Next構文の書式】




	For カウンタ変数 = カウンタ開始値 To カウンタ終了値 [Step X]		・・・・・1





		ここに繰り返したい処理内容を記述する			・・・・・2





	Next カウンタ変数			・・・・・3



[コードの意味]

1.カウンタ変数とは,現在何回処理を繰り返したのかを記録しておくための変数である.

  カウンタがいくつからいくつまでの処理を繰り返すかを記述してやる.

  カウンタの初期値が0で100回処理を繰り返したい場合なら,次のように書く.初期値が0

  なので100回処理を行う場合は,終了値は99となる.



	For カウンタ変数 = 0 To 99



		処理内容



	Next カウンタ変数

	

2.カウンタ変数が指定範囲内にある間,実行する処理をここに記述する.

3.For Nextループの末尾を表す.2の処理を終えてここにいたると,カウンタ変数の値

  が[Step X]で指定された分だけ,増加(または減少)する.何も指定がなければ1増加

  する

 

4.関数

目次へ

(1)Sqr 関数

目次へ

 数式の平方根を返す数値演算関数である.

次の例は、Sqr 関数を使って、指定した数値の平方根を計算する.



	MySqr = Sqr(4)	' 2 を返す.

	MySqr = Sqr(23)	' 4.79583152331272 を返す.

	MySqr = Sqr(0)	' 0 を返す.

	MySqr = Sqr(-4)	' 実行時エラーが発生する.

	

 

(2)Int 関数

目次へ

Int ( Number )

 指定した数値の整数部分を返す.Int 関数は、number の小数部分を取り除いた整数値を返す.

number に負の値を指定した場合には、Int 関数が number を超えない最大の負の整数を返す.たとえ

ば,number に -8.4 を指定すると、Int 関数は -9返す.

次の例は,Int 関数を使って,数値の整数部を求める.



	MyNumber = Int(99.8)	' 99 を返します。

    	MyNumber = Int(-99.8)	' -100 を返します。

    	MyNumber = Int(-99.2)	' -100 を返します。

	

 

5.セルの値を取得する,セルに値を記入する

目次へ

 セルの値を取得したり,セルに値を記入したりするステートメントには,RangeCellsの2つのス

テートメントがある.Range("A2").ValueCells(2,1).Value は,どちらも「セルA2の値

という意味である.選択するセルが変わっていくマクロの場合,行や列を変数にするが,その場合は,

Range ではなく,Cells を使う.「Cells(行,列).Value」これで,行を1つずつ追加していったり

することにより,参照するセルが変わる.

 

6.その他のステートメント

目次へ

(1)Exit ステートメント

目次へ

 For...Next ループを抜けるフロー制御ステートメントである.or...Next ループを抜け,Next ス

テートメントの次のステートメントに制御を写す. For...Next ループの中だけで使用 できる.

For...Next ループがネスト(入れ子)構造になっているときは,Exit For のあるル ープの1つ外側

に制御を移す.

文頭へ