はじめに
プログラミングは自分には無理と考えている人はいないだろうか?
ここでは、ExcelVBAでプログラミングを始めたいが、どうしたら良いかわからないという人のために書き綴っていこうと考えている。
読者がド素人である事を想定しているので、操作方法や知識の解説が少々回りくどく感じる方も良いかかと思われるが、そこはご承知いただきたい。
「これだけは知っておきたい」という内容を取り上げていこうと考えているので是非参考にして頂ければ幸いだ。
さて、初めに言っておくがプログラミングは知識と経験が必要だ。
つまり、知識だけではいつまで経っても上達はしないし、それなりに時間がかかるという事だ。
経験値を積みたければ、これから示していくプログラムコードを実際に書いて、実行して試してほしい。
何から進めていけば良いか
ExcelVBAは、VBE(ビジュアル ベーシック エディター)というプログラムエディターで書いていく。
VBEとはExcelの裏画面みたいなものだ。

初心者は、普段のExcel画面からVBE(ビジュアル ベーシック エディター)が現れた途端に、「自分には無理だ」と感じる人もいるだろう。ただ、やりもしないうちから諦めてしまうのは早計というものだ。
「無理だ」と考えるのは取り組んでみてから判断してほしい。
VBEは、プログラムコードを効率的に書けたり、不具合を見つけたりする機能があったりと多機能なので、こんな画面になっている。
ただ、安心してほしい。最初は最低限必要な機能を使えば良いだけし、全てを使いこなす必要はない。
(知識で武装してからでないと、物事を始められないという考えは捨てよう!)
まずは、このVBEの操作に慣れてもらう事になる。
・VBEを開く
・短いプログラムコードを書く
・プログラムを実行する
この一連の流れを迷わずに出来るようになろう。
(ここで大事なのは、慣れること。1回でわかったと思わずに5回くらい繰り返してみてほしい。考えずに出来るようになるのが理想だ。)
プログラムが実行できるようになったら、変数、繰り返し処理、条件分岐を学んでいく。
ここからは知識を積み上げていく。
併せて、専門用語なども解説していくが、あまり難しく考えないでほしい。
「やっているうちにわかってくる」
野暮ったい言い方だが、頭で理解していても、自分で使えるようにならないとダメだ。
そのためには、短いプログラムコードを書いて動作を確認し、少し変化させてまた動きを確認するという方法が良いと思う。
次にExcelの部品であるオブジェクトの使い方を学ぶ。
オブジェクトについては後述するが、今はExcelの部品と考えてほしい。
セルやシート、ブックの他、図形(シェイプ)、ボタン、ユーザーフォームなど様々なExcelの部品がオブジェクトという形式で作られている。
これらの使い方を学んでいく事になる。
とは言ってもオブジェクトは非常に数が多い。基本的には自分が必要なものを覚えていくような形になるだろう。
もちろん、ここでは全てを説明しきれないので、よく使うもの(セルやシートなど)を解説する予定だ。
では、VBEの説明から始めていこう。
VBEを開く
VBAプログラミングをするためには、VBE(ビジュアル ベーシック エディター)を開く必要がある。
VBEを開くにはExcelのメニュータブから「開発」を選んで、左端にある「Visual Basic」をクリックする。

「開発」というタブが無い人でも安心して欲しい。実は初期状態では「開発」タブは表示されていないのだ。
その場合は、「ファイル」>「オプション」>「リボンのユーザー設定」で右側にある「開発」にチェックを入れればOKだ。
これでメインタブに「開発」が表示される。
ここにも解説があるから、良かったら見て欲しい。
・開発環境を整える
では、改めて「開発」を選んで、左端にある「Visual Basic」をクリックして欲しい。

以下のようなVBEの画面が表示されると思う。

VBEの画面は以下のようにいくつかのウインドウで区切られている。画像と違っていても大丈夫。
各ウインドウは大きさを変えたり、表示・非表示が自由にできる。
もし、ウインドウを消してしまったら、メニューの「表示」から選択すればOKだ。
VBE画面の説明
最初に画面の大まかな説明をしておきたいと思う。ただ、専門用語に振り回されてもつまらないので、一読して何となく雰囲気を掴んでもらえればOKだ。
実際にどのようなものかは、使っていくうちにわかってくる。今は以下のような名前のウインドウがあるのだなという程度で十分だ。
表示されているウインドウは、以下の5つのウインドウに分かれている。
・プロジェクトウインドウ
・プロパティウインドウ
・コードウインドウ
・イミディエイトウィンドウ
・ローカルウインドウ
初心者が混乱するようなややこしい名前だが、そういう名前なのだから仕方がない。
各ウインドウには以下のような役割がある。

プロジェクトウインドウ
プロジェクトとは1つのブックが持つプログラム全体を束ねているものと考えて欲しい。
内部にあるのは、「モジュール」と呼ばれるプログラムを書く場所が、ツリー状に格納される。
「モジュール」とは、プログラムが書かれたものを指すと考えて欲しい。
プロジェクトウインドウの用途は、モジュールを選択してモジュールをコードウインドウに表示させるためにある。
プロパティウインドウ
「プロパティ」とは、「オブジェクト」の属性のことを指す。「オブジェクト」の説明は後述するが、ここではExcelの部品と考えて欲しい。
例えば「シート」という部品(オブジェクト)には、「シート名」や「表示の有無」などのプロパティ(属性)が存在する。
これらの情報は、予め初期値が決まっていて、後から変更できるようになっている。
つまり、必要になったら変更すれば良いという仕組みになっている。
現在どのような値になっているかは、このプロパティウインドウで確認する事ができ、プロパティウインドウ上で値を変更する事もできる。
コードウインドウ
実際にコードを書くのがコードウインドウになる。ユーザーが一番よく使うのがこの画面になる。
最初は全画面表示なので真っ白だが、右上にある「ウインドウを元のサイズに戻す」を押せば、個々のコードウインドウをバラバラに表示させることができる。


もし「ウインドウを閉じる」(×)を押して閉じてしまっても、プロジェクトウインドウで必要なモジュールをクリックすれば再表示できる。
イミディエイトウィンドウ
プログラムの途中で変数がどのように変化しているかなどを確認する時にデバッグ・プリント(Debug.Print) というコマンドを使って、変数の内容を確認できる。その結果を表示させるのがイミディエイトウィンドウになる。
以下が実際に表示させた様子。計算結果が表示されている。

ローカルウインドウ
ローカルウインドウは、現在のプログラムの中で、関連する変数やオブジェクトがどのような値を保持しているかをツリー状にして確認できるようになっている。
VBEではプログラムを途中で止める事ができるのですが、その時の変数やオブジェクトの状態を確認する事ができる。
黄色い部分でプログラムが止まっているが、この時点の変数 num の値がローカルウインドウで確認できる。

ここまでVBEの各ウインドウについて見てきたが、「何を言っているのか、さっぱりわからん」という人もいるだろう。
正直、筆者も最初の事はそう感じていた。でも使っていくうちに理解できるようになるという事を自分に言い聞かせて欲しい。
用語解説
実践に進みたいところだが、その前に、もう少し専門用語について解説しておく。
モジュール
モジュールとは、プログラムを書く所と覚えておけば良い。モジュールにはいくつか種類があって、
ユーザーが独自でプログラムを書く標準モジュール。
シート単位のシートモジュール。
現在のブックを指すThisWorkbookモジュールなどがある。
見た目は同じで、プログラムの書き方も同じなのだが、役割が違ってくると考えて欲しい。
標準モジュールは、汎用的な用途。
シートモジュールはそのシートに固有の用途。
ThisWorkbookモジュールは、ブック全体に固有の用途として使い分ける。
最初のうちは汎用的な標準モジュールしか使わない。慣れてきてからシートモジュールやThisWorkbookモジュールの使い方を見ていこうと考えている。

オブジェクト
オブジェクトは少々難しい概念で、これだけで1冊の本が書けてしまう。
初心者に説明するのは、これまた難しく、完全に理解してから先に進むというのも効率が悪くなる。
ただ、オブジェクトは難しいから使えないというものではない。
オブジェクトというのは予め決められた動作やオプションを選ぶことで、プログラミングできる仕組みを持っている。だからプログラマーはその手順にしたがってプログラムすれば良いわけだ。
例えばExecl の部品である「セル」は、値、背景色、枠線、文字色などの属性を持っている。これらはプロパティと言う。
これらの値は全て初期値を持っている。
プロパティ | 値 |
---|---|
値 | (なし) |
背景色 | 透明 |
枠線 | (なし) |
文字色 | 自動(黒) |
書式は以上のようになるだろう。ここであるセルの「値」を ”abc” という文字列にしたければ、「値」プロパティを ”abc” にすれば良い。
この時、背景色や枠線、文字色に関しては変更の必要はないので放っておけば、勝手に「セル」オブジェクトは初期値の状態で再描画してくれる。つまり、プログラマーは変更したいところだけに集中していれば良いわけだ。
オブジェクトには、メソッドという独自の命令を備えている場合もある。メソッドは命令(何かの操作をさせる事)なのでプロパティとは性質が異なる。「セル」のメソッドには「コピー」がある。
オブジェクトを扱うという事は、プロパティを設定したり、メソッドを実行したりする事になる。
Excelの部品であるセル、シート、ブックなどに加えて図形(シェイプ)、グラフ、ユーザーフォーム、ボタンなどありとあらゆるものがオブジェクトという形で存在していて、それらを使いこなすのがVBAプログラミングといっても過言ではない。
とりあえず、オブジェクトの知識はこのくらいにして後は実際に使いながらどのようなものかを感じ取ってもらいたい。
最後に
今回は、プログラムを一行も書かずに終わってしまったが、少々外堀を埋めて知識の準備をさせてもらった。
ここまで、「使っていくうちにわかってくる」ということを何度か言ってきたが、逆を言うと「使わなければ身に付かない」という事もである。
次回からプログラミングコードが出てくると思うが、必ずVBEでプログラムコードを書いて、実行して結果を確認してほしい。
プログラムコードを読んで分かった気になってしまう人の何と多いことか、、、
プログラムは実行して、不具合が無い事を確認して完成したといえる。
次回からプログラムコードを示していくので、実行して確認するのを忘れないでほしい。
コメント