サイト内検索

VBA基本構文 基本

VBAコードの順次進行

プログラムは基本的に書かれた順番に上から実行されます。ですのでプログラムの記述の順番を1つ間違えただけで、エラーを起こして途中で止まったり、運よくエラーを起こさなくても正しい集計結果得られないことがあります。

このようなことからVBAコードだけではなく、プログラミングを正しい順番で書くことは、プログラムをコーディングする上で非常に大切な考え方の1つになります。

本記事では、その非常に大切な考え方であるプログラミングの基本構造の1つ、「順次進行」について詳しく解説しています。

順次進行とは

プログラムが上から順番に実行されることを「順次進行」といい、プログラミングをする上で、とても大切な考え方になります。この順次進行はプログラミングの3つの基本構造のうちの1つとして、他のほとんどのプログラミング言語にも共通する大切な考え方の1つです。

プログラミングの3つの基本構造とは以下の事をいいますが、本記事では順次進行について、具体的なVBAコードを参考にしながら考えていきます。他2つの基本構造については、それぞれ別の記事で解説しております。

VBAコードによる順次進行

では、実際にVBAコードを書きながら、順次進行がどのようなものかを確かめてみましょう。まずは次のサンプルコードを入力してみてください。

 

では実行する前にコードの説明をしますね。

5行目: Dim intA As Integer
6行目: Dim intB As Integer
2つの整数型変数「intA」と「intB」を宣言しています。整数型は、as の後ろに「Integer」と書くことで定義できます。ちなみに長整数型の場合は、as の後ろに「Long」と書きます。

Tips
VBAコードの整数型と長整数型

9行目: intA = 3
10行目: intB = 5

5, 6行目で宣言した2つの変数に整数値を代入しています。

13行目: MsgBox intA + intB
14行目: MsgBox intA - intB
15行目: MsgBox intA * intB
16行目: MsgBox intA / intB

2つの変数A, Bに対する四則演算の結果をMsgBox関数で順次表示します。今回は特にこれらのコードの順番に注目して解説しておりますので、よく確認しておいてくださいね。

ここで四則演算に使う記号について触れておきますね。VBAコードでは足し算(加算)を「+(プラス)」(上記VBAコードの13行目)、引き算(減算)を「-(マイナス)」(上記VBAコードの14行目)、掛け算(乗算)を「*(アスタリスク)」(上記VBAコードの15行目)、割り算(除算)を「/(スラッシュ)」(上記VBAコードの16行目)の記号を使い表現します。

剰余演算子 Modの使用例

ここで前項でご紹介した四則演算子以外に、VBA集計業務でよく使われるものとして、剰余演算(余りを求める演算)があります。この剰余演算に使う演算子は「Mod」演算子といいます。

Mod演算子がよく使われる例は、たとえば偶数/奇数の判別に利用したり、日付から曜日を求めるときなどがあります。(下図参照)

Mod演算子を使う事によって、偶数/奇数の判定や日付シリアル値から曜日を判別することができる

図中の日付シリアル値とは、日付形式の表示を数値に変換したものです。具体的には、基準日となる1900/1/1を1として、以降1日ごとに1づつ加算されて計算される数値のことをいいます。

例えば、2019/5/1は43586(1900/1/1から数えて43585日目)、2020/4/1は43922(1900/1/1から数えて43921日目)となります。

よって日付シリアル値から、曜日を求めるには、曜日が7種類(日、月、火、水、木、金、土)である特性を活かして、日付シリアル値を7で除した余りを使えばよいことになります。

VBAサンプルコードによる順次進行の確認

では次にVBAサンプルコードの実行結果を確認していきます。VBAを実行すると下図のように、プログラムに記述された順にMsgBox関数のウィンドウが表示されるはずです。

MsgBoxによる記述順確認
プログラムの記述順にMsgBox関数が実行される

どうでしょう。VBAコード13~16行目の4つのMsgbox関数により「8」、「-2」、「15」、「0.6」という順番で表示されるあたりは、プログラミングの順次進行を実感できるのではないでしょうか。

MsgBox関数の記述順を入れ替えて確かめてみる

では念のためMsgBox関数を記述する順番を入れ替えた場合を確認してみましょう。下記VBAサンプルコードは、前述のMsgBox関数の記述順を逆に入れ替えたものです。

 

こちらについても下図に実行結果を表示しておきますね。

MsgBoxの記述順を変えた場合
MsgBox関数の記述順を変えると、変えた順番どおりに実行される

こちらもやはりプログラムの記述順に実行されましたよね。このようにプログラムは、基本的に記述された通りに実行されます。ここで「基本的に」とお伝えしたのは、プログラムの基本構造の他の2つである繰り返し分岐においては、必ずしも記述された通りに実行されないからです。

プログラムの記述順を間違えると。。。

ではここでプログラムの記述順序を間違えた場合の例を考えてみます。例えば下図のように、A地点からB地点まで、ロボットをプログラムで動かす場合を考えてみます。

ロボットが悪魔ちゃんに捕まらない経路
ロボットを悪魔ちゃんに捕まらないように、A地点からB地点まで動かす経路

この時、ロボットを動かすための入力条件は、1ブロック単位で上下か左右どちらかに動くように指示を出せるとします。さらに、図の左上と右下の悪魔ちゃんは通ることができません。

そのような条件で考えると、図の例でロボットをA地点からB地点まで動かすにはいくつかの方法が考えられますよね。例えばプログラムに「上に動く」(①)、「右に動く」(②)、「上に動く」(③)、「右に動く」(④)という4つのコードを順に記述すれば上手くいきそうです。

VBAコードで書くと下図のようなイメージになると思います。

ロボットを正しく動かすVBAコードイメージ
ロボットをA地点からB地点まで、悪魔ちゃんを避けながら動かす場合のVBAコードイメージ

ここで、例えばプログラムの記述を間違えた場合を考えてみます。その間違えた一例として、以下のようなコーディングミスをした場合はどうでしょう。

VBAコードの記述順を間違えてしまった例
うっかりコードの記述順を間違えてしまった!

上のコードの記述順を間違えたまま、ロボットを動かそうとすると今度は途中で悪魔ちゃんに捕まってしまい上手くいきません。

VBAコードの記述を間違えた場合のロボットの動き
プログラムの記述順を1つ間違えるだけで目的達成(A地点からB地点へ行く)が失敗する例

このようにプログラムの記述順を1か所でも間違えると、プログラムエラーや集計結果が期待したとおりにならないことがあることが容易に想像できますよね。

今回は4行程度のとても短いコードですが、実際の集計業務などに必要なVBAコードは数百行にもなります。そのような大量コードの場合、コード一行単位というよりは、ひとまとまりの処理をさせるためのコード群の順番が間違えることもよくあります。

まとめ

プログラミングの基本構造の1つ「順次進行」について、VBAサンプルコードの動きを確認しながら解説しました。そこでは、「順次進行」の考え方に基づき、プログラムは記述された順に実行されることを、VBAサンプルコードの実行結果から確認しました。

また、プログラムの記述順を間違えた場合に考えられる不具合の一例として、簡単な例を用いて解説してきました。

集計業務の実務でもプログラムに記述するひとまとまりのコード群の記述順を間違えると、予期せぬエラーや期待する集計結果にならない事態を引き起こすことになりますので、ここでご紹介したコードの「順次進行」の考え方に基づき、プログラミングの際は、その記述順が大切であることを意識してコーディングをしてみてください。

[スポンサーリンク]



サイト内検索

-VBA基本構文, 基本
-

Copyright© 集計用VBAサンプルコードをやさしく学ぼう , 2020 All Rights Reserved.