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

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

初心者のためのExcel エクセルマクロVBA入門-マクロをマスターしたいと思ったら

マクロは難しくない


これからまた最初の最初のステップです。色々とエクセルを使って作業をしているとあぁ・・・マクロが使えたらなぁなんて思ったことないでしょうか?おそらく、マクロの記録を使ってみて、再現して、おぉ・・・これがマクロか・・・と思ったり、実際にVBEを開いてマクロの中身をみて・・・


なんじゃこりゃ!


となってそっとウィンドウを閉じたりした記憶があったりなかったり・・・(笑)

マクロというはエクセルを自動で動かすものですが、マクロをという言葉自体は別にエクセルに限ったことではありません。マクロ自体はとあるアプリケーションの動作をまとめて、1つの「処理」として記憶しておくことができ、かつ再現できるものです。ですのでエクセルのマクロはエクセルを自動で動かしますがWordにもマクロはあるし、はてはテキストエディタにだってマクロはあります。秀丸というテキストエディタソフトのマクロなんて特に有名です。

マクロは大抵どのアプリケーションでも存在していて、かつお気軽に利用できるというのが魅力です。
しかも動かすのは特定のアプリケーションの操作なわけですから、動かす用の命令文(言葉)はすでに用意されています。こんなに便利なことはないですね。

ですから言葉(エクセルならVBA)さえ覚えてしまえば、マクロは簡単なんです。

エクセルマクロはエクセルでやってることは全部できる!


このように断言してもいいです。エクセルの操作を自動化するのだから手作業で出来ていてマクロで出来ないなんてことはありません。もちろん自動化しない方が良い場合もありますし、あまりにも特殊すぎてフロー化や単純化ができなくてマクロにはできないということもあります。ですが、毎月やってることや毎日やってることはエクセルで自動化は大抵できると思ってください。

マクロの記録の弊害


このブログで散々マクロの記録はしない方がいいよ。と言ってきました。それはVBAマクロ言語が分からない人が記録したマクロを見たところで何もできないということが分かっているからです。また、マクロの記録にはある特徴があり、それによりちょっとだけVBAが分かった人が使うと、まずい使い方をしてしまう傾向が強いからです。
例えるなら、英語が全く分からない人が、英語が書いてる文を見てもそこから何もできないし、その文章から発展させることなんて絶対にできないです。また、ちょっと英語が分かっている人が無理して使うと、とんでもない言葉を相手に使ってしまったり、変に冗長な言い方になってしまったりするのと同じ感じです。

普通はまず、正しい英語のフレーズだったり、文法を学んだり、言い方だったり、普通はこう省略したりするよ。ということを学びますよね?VBAはプログラミング言語ですので、まったく同じことが言えるわけです。

例えば、検索をマクロ記録するとFind文が記録されますが・・・こんな感じで記録されます。

Sub Macro1()
'
' Macro1 Macro
'

'
    Cells.Find(What:="ABC", After:=ActiveCell, LookIn:=xlFormulas, LookAt:= _
        xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _
        , MatchByte:=False, SearchFormat:=False).Activate
End Sub

また、Sheet2に移って、そこでオートフィルを実行したとしましょう。そうですねA3から1~20までの数字を入力しましょうか?それをマクロ記録するとこうなります。


Sub Macro1()
'
' Macro1 Macro
'

'
    Sheets("Sheet2").Select
    Range("A3").Select
    ActiveCell.FormulaR1C1 = "1"
    Range("A3").Select
    Selection.AutoFill Destination:=Range("A3:A22"), Type:=xlFillSeries
    Range("A3:A22").Select
End Sub

この2つの記録したマクロをVBAをまったく知らない人が見たって何が何だかわからないんです。そもそも1つ目の検索なんてこれで実は1文の命令文だということすらおそらくわからないでしょう。また、ちょっとだけFind文について理解している人でも、Find文はこのように書けばいい。とばかり思っているので、上の命令は「ABC」という文字列をシート1全体から検索しているのですが、それは実は・・・

Cells.Find "ABC"


これだけで、実は同じことを実行してくれることがわかりません。また、検索した後にも、色々とやりたいことがあったりしますが、その後が続かない。。。

2つ目もVBAをまったく知らない人がこれはA3~A22までのセルに1~20までの数字を入れてるんです。と言ったところで、


はぁ?


でしょうし、ちょっとだけ知ってる人なら、一生懸命Selectしながらオートフィルを実行するのでしょうね・・・これも実は

For i = 3 to 22
    Sheet2.Cells(i, "A").value = i - 2
Next

だけで、同じことができるって永遠にわかりません。

正しく理解すればマクロは超簡単である。


上の2つの例もFindメソッドの正しい使い方とFor文という繰り返しの制御構文さえ理解できていればいいだけです。ただこれだけなんです。マクロがプログラムであること理解し、VBAプログラミングを正しく学ぶだけで、あなたも簡単にできるようになります。

VBAプログラミングって難しいんでしょう?


そんなことはありません。プログラミングを学ぶ上でこんなにも簡単な言語は他にないと思ってます。おそらく数あるプログラミング言語の中で最も習得が用意だと私は思っています。理由は・・・

  • エクセルの機能がほぼ命令1つで実行できる
    • やっていることがイメージしやすい
  • 日本語の変数やメソッドが使える
    • 初心者に優しい。(将来的には絶対使ってはだめですが…)
  • 覚えることが少なくていい
    • 基礎は共通ですが、それ以外はほぼ、いらない。

などがあります。もともと手作業でやってることをVBAの文章で書くわけですから、やっていることのイメージはすぐにつきます。少しだけ概念的なことがありますが、それさえクリアしてしまえば後は簡単です。
VBAはエクセルやアクセスなどのOfficeアプリケーションを動かすためのものとして開発された言葉です。ですので、そこに特化しているのでこれだけわかりやすくすることができます。

VBAは簡単です。

間違いなく簡単です。英語よりもぶっちゃけ日本語より簡単です。あいまいさがないので。そもそもエクセルというかパソコン自体はあいまいさを理解なんてしませんからね。

マクロをマスターしたいと思ったら。


まずはVBAプログラミングを勉強しましょう。習得は簡単です。マクロの記録なんてしてしまうと余計にややこしくなって難しく見えてもうやる気も起きません。まず、セルA1に「こんにちは鈴木太郎さん」と出力するようにVBAを使ってエクセルに命令するところから始めましょう。覚えることは、

大きく分ければこの2つだけです。これだけできたら後はびっくりするほど簡単です。たった二つです。
是非、みなさん理系と文系とか難しそうとかイメージだけであきらめないでください。

エクセルマクロは超簡単です。


まずはこれだけ覚えてください。エクセルマクロは超簡単です。


今日はここまで。


かしこ