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



(2)

キーボードからAltキーを押しながらF11を押すと、もうひとつウィンドウが開いて、VBAを記述するための専用画面が出てきます。VBEと呼んだりしています。
出ます?

出ない方は、メニューバー[ツール]→[マクロ]→[Visual Basic Editer]をクリックして下さい。

なんか妙な画面ですよね。Excelのワークシートとは別のウィンドウになります。
次のステップとしては、これを使いこなさないとなりません。

VBAを書くための編集画面(エディタ)です。VBEと呼ぶのかな。
とりあえず、さっき記録したネコマクロも、ここで見ることができますので、見てみましょう。
VBをお使いになってる方にはおなじみの画面ですよね。

まず、左の上の方を見て下さい。
プロジェクト−VBAProjectというところがありますよね。
んで、その下にちょっとしたツリーがあります。Excelの中にSheet1、Sheet2、Sheet3と並んでて、其の他にモジュールというのがあると思います。

いかがでしょう。ま、細かいとこはわたしのと同じじゃないかもしれないですが、とりあえず画面の見方だけ確認して下さい。

モジュールの入れ物の中に、Module1というのがありますか?これをダブルクリックしてみて下さい。
するとすると、右側に、ネコマクロの全貌が表示されます。

さっき記録したマクロを、VBAという方法で記述すると、こうなるわけです。

左端に'(シングルコーテーション)がついている行は、注釈行です。
別になくてもいいのですが、いつ誰が作ったかとか、何のために作ったかとか、なんか書き残しておきたいときはこうやって書きます。
ちょっと文字の色が他と違いますので、区別しやすいですね。
シングルコーテーションなしで好き勝手なことを入力すると、怒られますのでご注意を。

さて、その下の、なんかよく分からん文字列が並んでいる部分、ここがこれからの主題になります。じっくり見て下さい。

これは、先ほど行った

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

この操作なんです。よーく見ると、クリックしたセルの場所や、ドラッグしたセルの範囲などが記されていますよね。
この操作を、VBAで記述すると、こうなるわけですね。

で、Excelは「ネコマクロを実行しろ」と命令されたら、これをせっせと1行ずつ実行しているわけです。

「VBAを使う」ということは、こういう処理を手入力することなんです。
でも、セルの場所とか、なんだか覚えにくそうな英単語みたいな命令文とか、こんなのすぐ書けって言われても困っちゃいますよね。
なので、マクロ記録という機能をうまーく活用して、ExcelにVBAを書かせてしまおうというわけです。

で、このネコマクロは、ずっとこのワークシート(つまりはExcelのブック。ファイルと読んでしまった方がわかりやすいですかね)に保存されるので、このネコ表を開いて、コマンドボタンをクリックすればいつでも実行できるというわけです。


さて、それでは、このネコ表を使って、もちっとプログラムっぽい処理を作り込んでみましょう。
ここから先は少々難解です。ゆっくり進んでいくとしましょう。

ネコたちの得点の合計がF列に計算されていますよね。
この数が800点以上のネコは、おりこうネコということで合格となります。
え?髭ゲームって何かって??・・・知りませんよ。近所のネコに聞いてみて下さい。

ぱっと見た感じだとおりこうネコとそうでないネコの区別がつきにくいので、F列の合計得点が800点以上のネコは、B列に入力してある名前の色を変えてあげようと思います。

そうすると、

★800点以上なら、800点未満なら、という判断をする。
★表には15行入力する欄があるので、5行目から19行目まで15回繰り返し処理をする。
★文字の色を変える。

という処理を、段取りよくやらないといけないですね。

最初のふたつは、徐々にお話をしていきます。とりあえず、ネコの合計得点が表示されるセルの場所と、ネコの名前が入力されているセルの場所を確認しておきましょう。
みっつめの「文字色を変える」。これは、ちょっと仮マクロを記録して試してみましょうか。

1.「色」を調べます。

じゃ、一回VBEのウィンドウだけ閉じて下さい。Excelのワークシートの方のウィンドウはそのままで。
で、どっかネコの名前が入ってるセルをアクティブにして、このセルの中の文字色をいろいろ変えてみましょう。
その様子を全部マクロ記録しておけば「文字の色を変える」とき、どんな書き方をすればいいのか手がかりがつかめそうですよね。

んじゃ、マクロ記録開始です。
え、どうやるかワカラナイ?・・・・メニューバーの[ツール]→[マクロ]→[新しいマクロの記録]です。

なんか適当にマクロ名を付けましょう。NekoMacro2とか、何でもいいです。練習ですから。と、画面のどこかに、マクロ記録を終了するときにクリックするボタンが出てきますよね。これは後でクリックするとして・・・。

ツールバーの右上の方に出てる文字色変更のツールボタンを使って、文字の色を変えてみます。
赤、ピンク、青、緑、ねずみ色、黒・・・この辺を選んでみましょう。いろいろ変えてみて下さい。いちおう、どういう順番で変更したか、選んだ色の名前を書き取っておくとよいでしょう。
で、マクロ記録の終了ボタンをクリックしましょう。

さて、もう一度VBEのウィンドウを表示させて(Alt+F11)、モジュールのところを見てみましょう。多分、Module2っていうのができてると思うんで、これをダブルクリックします。

「文字の色を変えろ」という命令は、こんな感じの命令文になるんですね。Selection.Font.ColorIndex=3・・・。
ふうん。3というのが、「色」のことみたいですね。

じゃ、このマクロを土台にして処理を書き込んでいくとしましょうか。
どれか1行だけ残して、後は消しちゃって下さい。
実行してないときは単なるメモ帳みたいなもんですから、削除したい文字のところにカーソル置いて、deleteキーで消しちゃいます。

ただ、中途半端に残したりしないようにしてくださいね。1行1処理ですので、削除するなら1行分すぱっと全部消します。

うーん、わたしはどれにしよっかな。。。。みなさんは何色にします?


さて、こういうとき忘れちゃイケナイのが、世の中には「800以上だったら」「それ以外のとき」の2種類のパターンが存在するということです。

どうしても「800以上だったら」のとき、ピンク色にしよう〜とか、どうしてもそっちに気を取られてしまいますけれど、「800以上じゃないとき」どうするのか、というところにも考えが及ばないと、正しいVBA使いとは言えないのです。

とにかく裏の裏をかいて、「こういう場合はどうなる?」と徹底的に疑う精神を持つこと。これがVBAの精神です。

VBAとか偉そうなこといったって、書いてあることしかやりませんからね。「元に戻せ」とか言っても、そりゃ通じません。
「800点以上のネコはピンク色に」「それ以外のネコは黒に」と、両方のパターンを考えないとならないのです。
でないと、一回ピンク色になったネコの名前は、ずーっとピンク色です。

まあ、この場合でしたら、「ピンク色」と「黒」の両方の色番号をチェックしておく必要がある、ということですね。

色が分かりにくくなりそうでしたら、シングルコーテーションをうまく活用して、注釈を付けておくとよいでしょう。

Sub NekoMacro2()
'
' NekoMacro2 Macro
' マクロ記録日 : xxxx/xx/xx ユーザー名 : xxxx
'

 Selection.Font.ColorIndex = 7 ' <--ピンク色
 Selection.Font.ColorIndex = 1 ' <--黒

End Sub

半角シングルコーテーションの右側は、自由にコメント入力できますので、うまく活用してください。

この構文の意味とか、そういうのは後で学ぶとしましょう。とにかくこの1行で、「選んでるものの文字の色が変る」っていう」ことになります。

私たちが普段何気なく使っている、文字の大きさや色、種類、セルの色など各種書式は、みんなVBAで記述すると上のような感じになるんですね。でもいちいち覚えるのもたいへんなので、こうやって仮のマクロを作って記録させてみて調べる、という方法、ぜひ使ってみてください。


さて、それでは次にBAでもっとも重要となる「処理の分岐」に挑戦してみましょう。つまり

セル「F5」の得点を見る
もしも800以上だったら それ以外だったら
「B5」のフォントをピンク色に 「B5」のフォントを黒に
もしもって考るのはおしまい

という処理をさせるわけです。