はじめに
 最近、ふとしたことからエクセルの表を見たのですが、数年前に触っていたエクセルとスタイルが全然違うではありませんか。これには正直言って驚きました。以前も、マクロという言葉は知っていたのですが、ややこしいとのイメージが先行して、全く取り組みませんでした。そこで、ひとつエクセルVBAについて、学んでみよう、そして学んでいく過程をホームページにして公開しようと、考えました。
 「エクセルVBAHELPのヘルプ」は、ヘルプを読んでいても意味が全然わからね〜、誰か教えてくれ〜という問いかけに自問自答していく形式で、作成していこうと考えています。また、わからないところについては、より詳しい人にこのページ上で問いかけしていきたいと考えています。「HELPのヘルプ」には、私もヘルプしてくれ〜という意味を含んでいますので、そこんところをよろしくお願いします。なお、専門家ではありませんので、自身の勝手な解釈・なんとか動いた・ベストなプログラミングにはなりえていない等は、ご容赦ください。




オブジェクト・プロパティ・メソッド・ステートメント・関数・演算子 ってなんだ?
VBAには、いろいろな専門用語が出てきます。その意味するところを早く理解することが、上達への近道と思われます。しかしながら、「なるほど」っと理解するまでには相当の時間が必要と感じています。私自身も感覚的にさえつかみきれていないのが実情です。はじめたばかりの人は私と同じように感じている人が多いかもしれません。理解が進み、具体的に説明できるようになれば、よいのですが・・・・・・・
とりあえず、調べた範囲で説明してみます。

オブジェクト
VBAを使って操作をする場合に、操作の対象(目的物)となるものを「オブジェクト」と呼びます。したがって、必ず指定するようになっています。例えば、FileとかRangeとかで、「○○を××したい」の○○にあたる部分です。オブジェクトには、その属性をあらわす「プロパティ」とその振る舞いをあらわす「メソッド」、そしてオブジェクトごとの「イベント」が含まれています。オブジェクトは、エクセルを構成する部品だと考えるとわかりやすいです。
オブジェクトの階層構造
オブジェクトは階層構造になっている場合が多い。オブジェクトの中に別のオブジェクトが設定されているということです。例えば、ワークシートは、セルや罫線、フォントなどで形成されています。これらも目的物となりますので、オブジェクトです。つまり、ワークシートオブジェクトの中にセルオブジェクトや罫線オブジェクト、フォントオブジェクトがあることになります。
詳しくはここをクリック もしクリックしてもエラーになる場合は、ドライブCにoffice2000をフルインストールしてください。
コレクションオブジェクト
オブジェクトの中には、同じものがいくつも存在する場合があります。例えば、ワークブックにあるワークシート。1つのワークブックにワークシートは何枚も設定できます。同じオブジェクトがいくつもある場合は、同じオブジェクトを集めて、1つのオブジェクトに出来ます。これを「コレクションオブジェクト」といいます。単体のオブジェクトに「S]をつけた形になります。Workbook⇒Workbooks、Worksheet⇒Worksheets などなど
プロパティ
オブジェクトの性質をあらわすもので、各プロパティには値が設定されています。「○○の設定を××にしたい」の××にあたります。プロパティーには、これ以外に「オブジェクトを参照する」ためのプロパティーもあります。例えば、Rangeオブジェクトの「Range」プロパティーなどは、Rangeオブジェクトの性質をあらわすものではなくて、指定した範囲をRangeオブジェクトとして取得するプロパティーです。このようなプロパティーは、オブジェクトと同じ名前になってます。
メソッド
オブジェクトへの操作・命令のことです。「○○を□□したい」の□□にあたります。例えば、オブジェクトを印刷したい「Printメソッド」やエクセルを終了する「Quitメソッド」などがあります。メソッドは、常にオブジェクトに属します。つまりオブジェクトに対して定められています。また、メソッドの多くは、引数を使って、実行する時の条件を指定するようにもなっています。
例えば、Range("A1:A5").Copy Range("B1") 意味:A1〜A5のセルをB1にコピーする。この場合のRange("B1")が引数です。
ステートメント
マクロの実行の制御やコードの記述についての宣言、ファイル操作などを実行するものです。コード内で任意の操作、宣言、および定義を行うための、完結した構文を持つ最小単位。通常は、1 行に 1 つのステートメントを記述します。ステートメント同士をコロン (:) で区切ると、1 行に複数のステートメントを記述することができます。また、行継続文字であるスペースとアンダスコアの組み合わせ ( _) を使うと、1 つの論理行を 2 行以上の物理行に分けて記述することができます。例えば、For....Next、If....Then....Else などです。
関数
数値の計算や文字列の処理などのほか、オブジェクトの操作についての関数などがあります。
演算子
変数や定数を使った足し算や掛け算などを使う場合に利用するものです。数学的計算のほかに、論理演算などがあります。
詳しくはここをクリック もしクリックしてもエラーになる場合は、ドライブCにoffice2000をフルインストールしてください。



第1話  いったい何をするのか
 まず、何からはじめたらいいのかわからん。とにかく本を買いに行こうということで本屋さんに直行。結構たくさんの本の中から、1冊買ってさっそく読んでみました。う〜ん、わからん。なぜか、もう一回、本屋さんへ。さらに3冊の本を購入。合計4冊、〆て1万円の出費。なんとかもとを取らなければと考えつつ、さらに読書と書いてあることのお試しをはじめる。



VBAとは
VBAとは「Visual Basic for Application Edition」の略で、Excelの操作や処理を自動で行うための専用の言語。もとはもちろん「Visual Basic」。



マクロ記録とVBAの関係
マクロの記録をすればVBAプログラムが勝手に出来てしまう。
たとえば、A1に1を入力、A2に2を入力し、A1:A2を選択。これをA10までドラッグするとA1からA10に、1から10の数字が入る。この操作を、マクロ記録して、VBAのコードを見てみると、ちゃんとプログラムが出来ている。これは、実に簡単で便利な機能。なお、この記録を後で使用しますので「Macro1」の名前で保存しておいてください。












マクロ記録とVBAプログラミングとの違い
メニューやツールバーで出来ることは、すべてマクロ記録が可能。では、VBAのソースを直接操作(以後、VBAと記述します)すると、どんなことが出来るようになるのでしょうか。

★マクロ記録は、記録したことしか実行できない。VBAでは、座標や数字・文字などを後から入力することが可能となるので、対話形式で実行することが出来る。

★「フォーム」と呼ばれる、ユーザーインターフェースを作成すれば、Windowsのソフトのようなものを作成することが出来る。



VBAでいったい何を作成すればいいのか
VBAの作成目的は、人それぞれだと思います。私としては、「フォーム」をつかって、データーベースを構築できるソフトを作ってみたいと考えています。「Access−アクセス」を使用すれば簡単に出来るのですが、アクセスを持っている人は私のまわりでは少ないので、多くの人が持っているであろうエクセルのVBA機能を駆使して作成してみたいと考えています。途中で多少の寄り道があるかもしれませんが・・・・・・。