こんにちは。
先日、VBA始めて2週間で、4時間かかっていた業務を10分に縮めました。
「面倒な業務がこんな簡単に短縮できるのか!」と感動したので、私が今までやったことを記事にしたいと思います。
VBAを始める人が増えてくれたら超嬉しいです。
マクロを学ぶ目的を考える
マクロは、使う場面を思い浮かべないと書けません。
普段の業務で、
・ひたすら繰り返す作業
・毎月発生する作業
など、「これ手でやらなくてもよくない?」という業務を思い出してください。
私の場合、「大量のデータから大量のグラフを作る業務」に焦点をあてました。
ターゲットを絞らないと、無限に学ぶことが出てきてしまいます。目標は決めておきましょう。
まずこのサイトで基本を学ぶ
ターゲットを絞ったとはいえ、基本構文すらわからないとさすがに書けません。
「VBA再入門」は、私が実際に学習したサイトです。VBAの基本的な書き方を学ぶにはうってつけだと思います。
どのくらい勉強するか?
第1回から第8回までやれば、簡単なマクロは書けるようになります。(所要時間も3時間ほど。お手軽)
一応全30回ありますが、書くのに慣れさえすれば、最後までやりきらなくても問題ないです。
ただし、
第11回.分からない事はエクセルに聞く(マクロの記録)
第12回.エクセルの言葉を理解する(オブジェクト、プロパティ、メソッド)
第17回.セルにブック・シートを指定する(Workbooks,Worksheets,With,Set)
第18回.シートをコピー・挿入・削除する(Worksheets,Copy,Add,Delete)
このあたりはやっておくべきと思います。
いざマクロ作成!マクロの記録から始めよう
先程紹介したサイトの、「第11回.分からない事はエクセルに聞く(マクロの記録)」です。
こちらを参考に、実際に業務を記録してみましょう。
マクロを記録したら
マクロの記録で作られるVBAは、目も当てられないほどぐちゃぐちゃです。なので、必要な部分に絞ってコードを整えていくことになります。
単語単語で拾い上げつつ、たくさんググって乗り越えましょう。
マクロの添削方法についても、上記サイトが参考になると思います。
とはいえ、とりあえず動けばヨシ
最初からうまく作るのは難しいので、とりあえず動いたらOK!としましょう。
調べつつ改修していけば、段々慣れてきれいに書けるようになります。とにかく実践して慣れるのが大事です。
あとは学びつつ実践の繰り返し
コードのきれいな書き方やVBAの機能など、知識を増やすことで書けるマクロの幅が広がります。
「VBA再入門」のサイトは学び方のロードマップもあるので、覗いてみてください。
以下では、記録したコードを整える例について挙げています。
これができるようになると強いです。
コードの改修例
Sheets("test").Select
Range("A1").Select
Selection.Copy
Range("B1").Select
ActiveSheet.Paste
SelectしてSelectしてCopyしてSelectしてPaste…
分かりづらすぎます。。さすがマクロの記録。
このコードを直すと↓
Dim ws As Worksheet
Set ws = Worksheets("test")
ws.Range("A1").Copy Destination:=ws.Range("B1") 'この1行でコピーペースト終わり
すっきり書けました。
しかも、コピペ動作の記述はたったの1行です。
(最初の2行はオブジェクト変数定義)
きれいなコードを書くためにやったこと
・オブジェクト変数を学ぶ
・Withステートメントを学ぶ
・とにかくググる
オブジェクト変数とWithステートメントは必修です。
あとのことはケースバイケースなので、とにかくググって先人に頼りましょう。
(先程の例はコピーペーストの書き方でしたが、グラフの作成やピボットテーブルの操作などなど、エクセルの機能分だけ無限にあります。それぞれの書き方覚えてられないので、いつも調べつつやってます)
おわりに
VBAをちゃんと学ぼう!と思うと、敷居が高くて踏み出しにくいですが、
必要に迫られて「とにかく業務に活かす!」と思えば、ちょろっと勉強してちょろっと作る、くらいの感覚でできてしまいます。
そして作って動くとめちゃ楽しいのもいいところです。VBA大好き。
最後まで読んでいただき、ありがとうございました。
この記事がお役に立てたら幸いです。