初心者のためのExcelマクロ超入門(絶対できるVBA開発)

マクロがまったくわからない人のためにエクセルマクロやVBAについてできるだけわかりやすく書いています。Twitter:@shuhhohhey

初心者のためのExcel(エクセル)マクロVBA入門-プログラミングの基礎2

Excelマクロで覚えなければいけないこと。

前置きが長いですが、やっとここからが実際のプログラミングです。
覚えてほしいことは、ざっくりいうと、4つくらいです。

・プログラムの仕組み(性質)
・変数という概念
・制御構文
オブジェクト指向

この4つくらいです。細かくわければたくさんありますが、とにかく4つ。
正直言うと、制御構文まで覚えればオブジェクト指向は知らなくても、
マクロは書けます。乱暴ですけどw
今ここで、それぞれが何のことかは理解する必要はありません。
1つずつやっていきましょう。

プログラムの仕組み(性質)

 Excelのマクロは「プログラム」です。プログラムを作ることを「プログラミング」
と言います。プログラムはExcel(PC)PCを動かすための「命令書」ともいえます。
この辺は前回でやりましたね。
 つまりプログラムはExcelと会話をするためのツールということになります。
その為に人間とExcelとの間で共通の言語がプログラミング言語であり、それが「VBA
ということでしたね。
 わからなくなってきた人のためにちょっと整理しましょう。

  • マクロ:Excelが自動で動くためのプログラムのこと
  • プログラム:Excelを動かすための命令書でありVBAで書かれている
  • VBAプログラミング言語の一種でExcelに命令するために使用する。

 ということになります。では四の五の言わずにまずは実物を見てましょう!
次のマクロを見てみてください。

Public Sub Sample()
    
    '名前格納用変数を用意してね
    Dim name As String
    
    '名前を入力してもらうウインドウを表示して、入力された名前をname変数に入れてね
    name = InputBox("名前を入力してください。", "名前の入力", "")
    
    '名前をセルに出力してね
    Sheet1.Range("A1").Value = "私は" + name + "です。"
    
    '出力が終わったというメッセージウィンドウを表示してね
    MsgBox "名前を出力しました。", vbOKOnly, "プログラム終了"
    
End Sub

マクロを書いてみよう

とりあえず、このマクロを実際に書いてみましょう。
エクセルを開きます。使うエクセルは2003と2007で操作が違うので気を付けてください。

  • 2003の操作
  1. 表示→ツールバー→Visual Basicを選択します。
  2. Visual Basic Editorのアイコンをクリックします。
  • 2007の操作
  1. オフィスのロゴをクリックし、Excelのオプションを選択します。
  2. 基本設定にある「開発タブをリボン表示する」のチェックをつけます。
  3. 開発タブが表示されるので、そこからVisual Basicを開きます。
  • 2010の操作
  1. [ファイル] タブをクリックします。
  2. [オプション] をクリックします。
  3. [リボンのユーザー設定] をクリックします。
  4. [リボンのユーザー設定] および [メイン タブ] で、[ 開発] チェック ボックスをオンにします。
  5. 開発タブが表示されるので、そこからVisual Basicを開きます。

すると・・・

f:id:drumer2sh:20130716164231p:plain

でました・・・いやぁ・・・ハードル高そうですよね。
見た目、えげつないです(笑)
もうこれだけ拒否反応出る人いたりするんじゃないだろうかw
ちょっとだけ我慢をして、左上にある[Sheet1]をダブルクリックしてください。

f:id:drumer2sh:20130716164909p:plain

すると、右側のグレーだったところが白くなり、ここにプログラムを書けるようになります。
さっそく、上のコードを入力してみましょう。

f:id:drumer2sh:20130716165045p:plain

以上で、終了です。
さっそく、プログラムを動かしてみましょう!
「F5」キーを押してください。下の入力ボックスが表示されるはずです。

f:id:drumer2sh:20130716165237p:plain

後はこのまま名前を入力してOKボタンを押してみましょう。
セルA1に「私は○○(名前)です。」という文章が出力されたでしょうか?

プログラムはプロシージャという単位ごとに書かれる

 これはセルA1に入力した名前を「私は○○です。」と入力するプログラムです。
Publicというのが公のという意味で「スコープ」と呼ばれるものです。
これについては今はそういうものなんだな。程度で大丈夫です。
Subというのが「プロシージャ」と呼ばれるものでプログラムの最小単位です。
Sample()というのが、このプロシージャの「名前」になります。
Sample()のカッコは必ず付けてください。つまりこれは「Sampleプロシージャ」ということです。

 プログラムはこの「プロシージャ」を最小単位として書かれます。今回のように
1つのプロシージャで終わる場合もあれば、数個、または数百個のプロシージャから
できているプログラムもあります。
大事なのは必ず最初と最後で挟んでいることです。
最終行の「End Sub」ですね。これは「プロシージャの終わり」を表しています。

プログラムは上から順番に実行される

 Excelは書かれた1つ1つの命令を上から順番に実行します。
上のSampleプロシージャで書かれている命令を日本語にすると?
実は、サンプルで書かれている「'(シングルクオートと言います)」の後に
書かれた日本語がそのまま命令の意味になります。
この「'」はVBAでのコメントを表す記号で、これを付けた後の文章はExcelはすべて
「無視」して実行します。その文章を無視してくれるので、命令文だけではわかりにくい
人間のために用意されたものです。したがって、Excelが実行するのは

Public Sub Sample()
    
    Dim name As String
    
    name = InputBox("名前を入力してください。", "名前の入力", "")
    
    Sheet1.Range("A1").Value = "私は" + name + "です。"
    
    MsgBox "名前を出力しました。", vbOKOnly, "プログラム終了"
    
End Sub

というこの4行だけになります。

プロシージャは複数の命令文で構成されている。

 これを見ればわかるように、このプロシージャは4つの命令文から成り立っています。
この命令文が直接Excelに指示を出す「言葉」になりますね。VBAという言葉の種類には4つあります。

  • ステートメント
  • プロパティ
  • メソッド
  • 関数

いわゆる英語でいう名刺とか動詞とかに当たります。
この4つを組み合わせて命令文ができていると思ってください。
それぞれについてはおいおい説明します。こんなのがあるんだな。
プログラミングをするにはこれが必要なんだなくらいに思ってくれたらいいです。

いかがでしょうか?プログラミングの特徴理解できたでしょうか?
あぁ、こんな風に動くんだな。くらいでいいです、最初は。
長くなったので、この辺で・・・次回はこのプログラムをもっとちゃんと見ていきますね。

まとめ

  • プログラムはプロシージャという単位でできている
  • プロシージャは複数の命令文でできている
  • プログラムは書いた順番に上から実行される
  • プログラムを実行するときは「F5」キーを押す
  • 命令文は以下の4つから成り立っている
    • ステートメント
    • プロパティ
    • メソッド
    • 関数

以上です!

わからなかったら、コメントでもなんでも聞いてね。

かしこ