VBA」タグアーカイブ

簡単なVBAサンプルで学ぶプログラミング基礎講座①-概要-

– 使い方ページ –

先日「プログラムは授業で身につくのか」という記事を書いたとき、
もし自分がプログラミングを教える立場なら、どのように説明するだろうと
考えてみたら

簡単なサンプルを提示して、実際に動かしてみてもらうのが
一番早いだろうという結論に至った。

ということで、今回はその1回目として
実際のサンプル公開とその説明をしてみようと思う。
※サンプルにはMicrosoft ACCESS(VBA)を使用

以下のサンプル画面とプログラム画像を見ながら、
説明を読んでいただけたらと思う。

A.メイン画面
B.勤怠情報テーブル
C.登録ボタンクリック時プログラム

メイン画面のプログラム(テキストファイル)

関数モジュールのプログラム(テキストファイル)

まず、仕様としては、A.メイン画面に入力された
「社員名」、「年月日」、「出勤時間」、「退勤時間」を
B.勤怠情報テーブルに登録するというシンプルなもの。

全体の構成としては   ※以下〇数字は、プログラム画像内に記載

①登録ボタンがクリックされる

③・⑦入力チェック関数を実行
 
 →入力チェックOKであれば
  ④・⑩テーブルに勤怠情報を登録
  ↓
  ⑤完了メッセージを表示
 
 →入力チェックNGであれば   
  ⑧メッセージを表示して処理を中止

というもの。

以下、サンプルを元にプログラムの基本要素について
説明してみようと思う。

1.定数、変数

 定数とは、固定値を入れる自分で名前をつけた箱、
 変数とは、変動値を入れる自分で名前をつけた箱
 とよく説明される。

 サンプルプログラムにおいては、⑦にあるsEmpNm、sWorkDateや
 ⑪のstrSQLやなどが変数に、⑫scSystemNmが定数に該当する。

 サンプルプログラムの変数sEmpNmには画面で入力された社員名が入る。
 社員名は入力した人によって値が変わるため、変数に入れ
 ⑬で勤怠情報テーブルの社員名の列に値が登録される。

 また、変数を利用するためには、宣言が必要で、その際、入れる
 データの型(整数、小数、日付、YesNoなど)を指定する必要がある。
 
 ⑪がその宣言で、「As String」の部分で、変数に入れる値が
 文字であることを指定している。

 データの種類は指定しなくても暗黙的に
 設定してくれる場合や、そもそも指定が不要な言語もある

2.関数

 ⑦(fChkBeforeRegist)、⑩(fRegistWorkTime)は、関数と呼ばれる。
 ※関数の名前は自分で設定

 プログラミングは、不具合を発生させないため、
 またプログラム自体を少なくするためにも
 出来るだけ同じ処理は書かないことが鉄則。
 
 サンプルのように同じ処理として使用できる可能性が想定される場合は、
 このように関数にしてまとめて書いておくことが多い。

 このサンプルでは登録ボタンクリック時に
 ③、④から呼ばれて実行されているのだけど、

 関数にしておけば、別のボタンをクリックした場合の
 処理からでも実行することができる。

3.処理フロー

 プログラミングでは、分岐や繰り返し(ループ)など
 処理フローを制御する構文が使われる。

 今回のサンプルでは、⑧のIF文が分岐処理で
 もし社員名が入力されていなければメッセージを表示、
 という処理に使用されている。

4.データベース登録処理

 ⑬がデータベースにデータを登録するSQLと呼ばれる命令文。
 ほかにも、データ抽出・集計、データ削除、データ更新、
 テーブル作成・削除など様々な命令文が使用でき、それぞれに構文がある。

 ACCESSは、インストール・構築が必要な、OracleやSQLServer、
 MySQL、PostgreSQLなどの本格的なデータベースとは
 異なる部分も多いけど、基本的には同じようなSQL文が使用できる。

5.エラー処理

 ②は想定していないエラーが発生した場合に
 ⑥ErrProcというプログラムを実行するという命令。

 通常はここに、データベースの変更をキャンセルするとか、
 エラーログを出力するなどの処理が書かれる。

以上が今回のプログラムの基本要素5つに関する説明なのだけど、
理解してもらえただろうか。

コピーでも構わないので、 変数の値などを確認しながら
実際に動作てみるのが、おそらく一番早く理解できる方法だと思う。

※上のプログラムの画像は、黄色になっている部分で処理を
 ストップさせている。この状態で、変数にマウスカーソルを合わせると、
 変数に入っている値を確認できる。

自分が何も知らなかったときのことを考えて説明するとなると意外と難しい。

出来るだけわかりやすい方法を考えつつ、あと数回、ほかの要素についても
説明を続けてみようと思う。