VBAによるプログラミング超入門講座(第1回)

By | 2015年7月27日

このページでは、以下の内容について説明しています。

コンピューターとプログラムの関係について

パソコンやスマホは我々にとって身近なコンピューターですが、パソコンやスマホの製造メーカは、BIOS、OS、アプリなどのプログラム(ソフトウェアとも言います)をパソコンやスマホに組み込んだ状態で販売しています。もしこれらのプログラムが無かった場合、コンピューターはどうなるでしょうか?…画面には何も表示されず、キーボードやマウスからの入力にも反応しない「ただの箱」になってしまいます。

コンピューターは、プログラムがあって初めて動作する機器なのです。

プログラムとは

プログラムは、コンピューターに対する「作業指示書」の役目を果たします。

コンピューターを人間にたとえると…(性格診断)

コンピューターは、人間にたとえると「実直」で「真面目」ですが、「自主性」に欠けています。作業指示書で指示された事は確実に実行してくれますが、作業指示書が無いと何もしてくれません。じっと動かず止まったままです。また融通が利きません。人間の得意技である「適当に」「思い付き」で判断する事もできません。

よってコンピューターへの作業指示書であるプログラムは、起こり得る全ての状況/条件を想定して、厳密にコンピューターに作業を指示する「文書」でなければなりません。

プログラムは「0」と「1」で出来ている

実は、コンピューターは「数」しか理解できません。よってプログラムは数で書かれています。0か1が大量に並びます。0か1が何個か集まると大きな数が表現できます(2進数表記といいます)ので、その個々の数に意味を持たせて、数によって仕事を指示するようにしています。

コンピューターにこの数が書かれたプログラムを読んでもらうには、コンピューター内の「メモリ」に転送して、プログラムをメモリから読み込んでもらう必要があります。

プログラミングとは

プログラミングとは、プログラムを書く作業/行為のことです。

前節では、プログラムは「0」と「1」で出来ている…と説明しましたが、人間にとって、数だけで作業指示書を書く事は大変難しい作業になります。よって「数」より解り易い「専用の言葉(=言語)」を使って「作業指示書」を書くのが一般的になっています。この特別な言葉の事を「プログラミング言語」といいます。

この考え方は、たとえば日本人がアメリカ人に作業を依頼する際、「日本語」で作業指示書を書いて、翻訳ソフトで「日本語」から「英語」に翻訳して、アメリカ人には「英語」で仕事を依頼する…という考え方と同じです。

プログラミングでは、人間が理解できる「プログラミング言語」からコンピューターが理解できる「機械語」に翻訳するための「翻訳ソフト」(コンパイラやインタープリタといいます)を使う事になります。

Microsoft社のVBA(Visual Basic for Applications)とは

VBAは、Microsoft社のOffice製品(Excel、Access、Word等)がサポートするプログラミング言語です。

人間が使う言語にも種類があるように(例:日本語、英語、フランス語等)、プログラミング言語にも幾つか種類があります(例:C, C++, C#, Java, JavaScript, Ruby, VBA等)。VBAはOffice製品の文書編集を「自動化」するのに適したプログラミング言語です。Office製品には、VBAで書いた作業指示書を数字で書いたプログラムに翻訳するソフトが内蔵されています。

本講座ではVBAを使ってプログラミングを勉強します。

コンピューターの基本動作

普段、我々がゲーム、ワープロ等を使用するとき、コンピューターは非常に複雑な仕事をしてくれていますが、このような複雑な仕事は、実は単純な基本動作の繰り返しで実現されています。

コンピューターの基本動作は「情報を入力して、計算/比較して、結果を出力する」動作です。

たとえばWindowsに付属する「電卓アプリ」では、キーボードから計算式の情報を入力して、計算して、結果を画面に出力しています。これがコンピューターの典型的な基本動作なのです。

プログラミングでは、このように「情報を入力して、計算/比較して、結果を出力する」…というような基本動作を繰り返し作業指示書に書き、コンピューターに作業を依頼します。複雑な仕事を一気に実行してもらうのでは無く、簡単な仕事を繰り返し依頼する事で、結果として複雑な仕事を実行してもらうのです。

プログラムの例

百聞は一見に如かず、ここでは超簡単なプログラムの例を見てもらいます。VBAというプログラミング言語を使って「(ある処理) を3回、繰り返す」だけの作業指示を書いた例です。繰り返したい処理は、今の段階では決まっていないので、ここでは仮に日本語で(ある処理)と書いておきます。

なおプログラミング言語で書いた作業指示書のことを「ソースプログラム」といいます。

Dim i As Integer

i = 1

Do

If i > 3 Then

Exit Do

Else

(ある処理)

i = i + 1

End If

Loop

プログラミングの基本作法(マナー)は

1行で1つの仕事を依頼する

同時に沢山の仕事を依頼せずに、できるだけ1つずつ仕事を依頼するようにします。コンピューターは、プログラムの一番上から順に1行ずつ読み込んで、1行ずつ実行してくれます。この基本ルールを考えて、ソースプログラムを書いてください。

繰り返しを活用する

幾つかの行を繰り返して実行して欲しいときは「Do~Loop」文を使います。コンピューターは「Do」文と「Loop」文で挟んだ間の文を繰り返し実行してくれます。その繰り返しの中で「Exit Do」文が実行されると、繰り返しを終えてLoop文の次の行から実行してくれます。

この「繰り返し」の書き方は、プログラミング言語によって異なりますが、概ね似ています。

条件判定を活用する

その時の状況/条件に応じて「もし~なら~を実行し、そうで無いなら~を実行する」というように、実行して欲しい処理を変えたいときは「If~Else~End If文」を使います。

「そうで無いなら~を実行する」が不要な場合は「Else~」以降は省略できます。

また~の部分に更に階層的に入れ子で「If~Else~End If文」を書く事もできます。

この「条件判定」の書き方も、プログラミング言語によって異なりますが、概ね似ています。

変数を活用する

外部から入力した情報、計算の途中結果などの情報は「変数」を使って小まめに保存(記憶)します。

変数を利用する目的

「コンピューターの基本動作」で説明したとおり、コンピューターの基本動作は「情報を入力して、計算/比較して、結果を出力する」ですが、このときの「入力した情報」、「計算した結果」、「出力したい情報」など、全ての情報は「変数」を使って小まめに記憶させる必要があります。そうしないと、情報が消えてしまって、再び参照できなくなるのです。

よって後で再び参照したい情報は、変数を使って小まめに記憶させましょう。

変数を使って情報を記憶する作法は、たとえば家の中で書類整理をするときに、適当な「箱」に好きな名前を書いて、その中に書類を入れる事で、再び書類を取り出しやすくする…という整理作法に似ています。

変数には、好きな名前を付ける事ができます。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です