<HOME  <お願い事項   <Access2002 TOP   <Access2000 TOP   <サイト内検索
 Access97 VBAの森>ExcelでVBA



(1)

まず、MS-Excelってどんなものか、軽くおさらいをしておきましょう。
VBAっつったって、結局Excelのワークシート内のデータを操作するプログラムを作るってことなんですから、画面内の仕組みをちゃんと把握しておかないと、せっかく構文を覚えても宝の持ち腐れになってしまいますもんね。

表計算ソフトの仲間ですので、入力した値は「セル」という単位で管理されます。

横を「行」、縦を「列」と呼びます。横にABCDE.....縦に123456.....と、それぞれの行、列ともに名前がついていますので、A列の4行目にあるセルのことをA4と表現します。
で、列は横に256列、行は縦に65536行あります。お暇でしたら、[Ctrl]を押しながら[↓]キーを押してみてください。行番号、65536でしょ?

で、この広大なセルの集まりをワークシートと呼びます。値を書き並べることのできる、大きな一枚の紙、といったところでしょうか。
あんまり「パソコンの画面」って意識しないで、机の上に紙広げて上から眺めてるみたいな感じを想像しながら使った方が分かりやすいですね。Excelは特に。

さらにExcelは、このワークシートを複数もつことができるようになっています。
画面の左下に、飛び出た見出しみたいなのがありますよね。ふつうはSheet1〜3まで、3枚切り替えられるようになってます。
必要に応じて複写したり新しく追加したりして、256シートまで増やすことができます。ちょうど、紙を上下に入れ替えてるみたいな感じですね。
で、一番上に表示されて作業対象となっているのをワークシート、それ以外は単にシートと呼びます。

縦、横、そして奥行きと、たくさんのデータを入力できるように画面が用意されているわけです。
わたしたちはこの画面のセルひとつひとつにデータを入力し、売上表とか、名簿とか、見積書とか、いろいろ作成するわけですね。

しかし、全部使う必要はないです。
まあ、大概、Sheet1の左の上の方だけチョコっと使って、名前をつけて保存して・・・という方が多いでしょう。好きなところに好きな大きさの表を自由に作ることができるってことです。
上の方があいてても、右の方があいてても、誰も文句は申しません。

その分、プログラムを組むという点では、少々難しいかもしれませんね。


さて、では、試しにいっこ、なんか作ってみましょうか。
まずはざーっと通して、適当なやつを作ってみます。
皆さんが作りたいと思っているものとイメージが違うかもしれませんが、とりあえずだまされたと思って挑戦してみて下さい。

Excelには、マクロの作り方に2通りの方法があります。
「記録式」「記述式」です。昔から表計算ソフトの世界で使われてきたマクロの作り方はだいたい「記録式」でしょう。

みなさん、操作をするとき、ツールボタンをクリックしたりワークシート内をドラッグしたりしますよね。

例えば合計の計算をするときは、

1)答えを出したいセルをクリックしてアクティブにする
2)ツールバーの「Σ」ボタンをクリックする
3)足しあわせたい数値の入っているセルをドラッグして範囲指定する
4)Enterキーを押して式を確定する

と、こんな感じの段取りになりますね。

マクロの記録モードに切り替え、この操作をひととおりやって、マクロの記録を終りにすると、上の1)〜4)までの処理がマクロとして記録されます。
で、このマクロに名前を付けて保存しておけば、次からはこのマクロを実行することで、計算を実行することができるわけです。これが「記録式」です。

まあ、要するに「録音する」みたいなもんですね。模範演技を見せて、覚えさせるわけです。

Excelのマクロ作成は、いちおうこの「記録式」にて作成されたものを土台にすることが多いので、まずはこの方法からの展開を習得するとよいでしょう。

ただし、Excelの計算式はすべて「セルの場所」で管理されます。
答えの出るところ、足しあわせるセルの場所は変わらないので、マクロ化しておかしくならないか、十分にテストしてから記録する必要があります。
間違ったまま記録しちゃいますからね。ほんと気が利かないですよパソコンって。


例えばこんな表があるとしますよね。

いつもこのシートの中に、得点を入力します。で、マクロを使って合計の計算をする、というようにします。
もっとも、マクロなんか使わなくても、計算式を作っておけば都度再計算してくれますけどね。。。
他にいい例題が思いつかんかったので・・・すいません。

え?「この表はなにか」って?
わたしの作るサンプルデータに意味なんかありませんよ。
みなさんも普段仕事や勉強では作れないような、人に見せられないようなへーんな表作って試してみましょう。

まず、操作手順を確認しておきましょう。
いつどこにカーソルがあっても、表の中の数値がどうなっていても問題が生じないよう、できるだけ細かく確認しておきます。

では、れっつごー。




1.メニューバーの[ツール]→[マクロ]→[新しいマクロの記録]をクリックします。

と、何という名前のマクロを作るか、いわゆるマクロ名を入力する画面が出てきます。
わたしはとりあえずNekoMacroとしてみました。おっと、ユーザー名のところにニキータの本名が出てるじゃないかっ!。CIAに追われている身なので、モザイクにします(笑)

で、OKすると、ここから先、マウスやキーボードから操作したことは全部マクロとして記録されます。
ちょうど録音テープを回している間みたいなもんなので、慎重に操作しましょう。キーボードに手ついたりしたらだめですよ。無意識にあちこちクリックするくせが付いてる人も、要注意です。




2.ネコたちの得点を合計する式を作ります。

念のためにもう一度。。。この「合計を出す」なんていう動作をマクロ化する必要は、ほんとは全然ないんです。
一度式を作ってしまえば、自動的に再計算してくれますからね。
今回はマクロってどんなふうに作るのか、過程をごらんいただくだけなんで、あんまり中身にはこだわらずにやってみてくださいね。

んでは、参考までにわたしがやった手順を・・・。

1)C20をクリックします。
2)ツールバーの[Σ]をクリックします。
3)適当な範囲指定がなされますが、いちおう用心のために、C5〜C19をドラッグします。
4)Enterキーを押します。
5)C20を再びクリックします。
6)アクティブセルの左下のハンドルを右方向にドラッグし、オートフィル機能を使って式を複写します。
7)F5をクリックします。
8)ツールバーの[Σ]をクリックします。
9)適当な範囲指定がなされますが、いちおう用心のためにC5〜E5をドラッグします。
10)Enterキーを押します。
11)再びF5をクリックします。
12)アクティブセルの左下のハンドルを下方向にドラッグし、オートフィル機能を使って式を複写します。
13)最後に、A1をクリックして、アクティブセルを左上のわかりやすいところに移動しておきましょう。

ここまで操作ができたら、画面のどこかにこんなツールボタンがないか探して下さい。
この青い四角いボタンをクリックすると、マクロ記録終了です。録音おわり。もうキーボードに手ついても大丈夫ですよ。


ふぅ〜。深呼吸。
失敗しちゃったら途中で止めて、最初からやり直しましょう。まあ練習ですから、何度かやってみて雰囲気つかんで下さい。




3.マクロが正しく動くか、テストしてみます。

じゃ、このマクロが正しく動くかどうか、試しますか。

C20からF20、F5からF19まで、全部Sum関数という関数が入力されたことになってますよね。
これを全部消します。ふつうにセルを選択して、Deleteキーで消しちゃってください。セルの中は空っぽになりましたよね。

では、改めて今作ったネコマクロを動かしてみましょう。



メニューバーの[ツール]→[マクロ]→[マクロ]を選ぶと、
このシート上に作って保存してあるマクロの一覧が出てきます。
といってもまだいっこしか作ってないですけどね。

ネコマクロ、あります?実行してみましょう。



ちゃんと動きますか?記録された動作(上の1)〜13))を、地道にマクロが実行してくれてるんですよ。
メリットは・・・私たちがマウスを動かさなくてもいいってことでしょうか。

これがマクロです。こんなもんなんですよ。所詮。
これが理解できてこそ、VBAを習得する意味があるというものなのです。

Excelはツールバーやメニューバーにしっかりいろんな機能が並んでるし、便利な関数もいっぱい用意されてるし、マクロ化なんかしなくたって十分使いやすいと思うんですけどね。なんか、マクロとかVBAとかって、口うるさく言う人いるんですよ。まあ、結局、マクロやVBAの作り方そのものより、何を自動化させたいのか、ってことじゃないかと思うんですけどね。




3.マクロが正しく動くか、テストしてみます。

ついでに、コマンドボタンを作ってみましょうか。

メニューバー[表示]→[ツールバー]→[フォーム]をクリックすると、画面のどこかにこんな感じのツールバーが出てきます。

「ボタン」というツールボタンがありますので、クリックしましょう。
右側の、上から2番目のやつですね。



ワークシートのどっか適当なところをドラッグして、ねずみ色のボタンを作ります。
ボタンの表面は最初だから「ボタン1」とか適当な名前がついてますけど、練習だしこのままでいいでしょう。

多分、ボタンを作った直後に、このボタンをクリックしたら、何をする?という意味で、マクロの一覧がどっかに出てくると思います。
さっき作ったネコマクロを選びましょう。

すると、このボタンをクリックしたら、ネコたちの成績を合計するマクロがぱぱっと動く、という運びになります。
ここまで来ると、なんか「仕組みを作ってる」っていう感覚になりますよね。

ボタンができたら、フォームのツールバーは閉じちゃっていいです。

で、もう一度、C20〜F20、F5〜F19の式をDeleteキーかなんかで削除して、テストです。

コマンドボタンの上にマウスポインタを合わせると、なんか手品師みたいな白い手の形になりますよね。
この状態のとき「ボタンが押せる」ってことになります。
クリックすると・・・・。どうでしょう。ネコマクロ、動いてます?

計算式を作った後罫線を引き直して印刷・・・なんてところまでマクロで作り込んでもいいかもしれないですね。
ポイントは段取りよくうまく記録することです。

さて、じゃ、このマクロが、実際どうなっているのか見てみましょう。
いよいよ本題です。