筆者のVBA歴は15年以上になります。
ExcelVBA、PowerPointVBA、WordVBA、AccessVBAひと通り経験があります。
VBA以外では.NET C#、PHP、JavaScriptでWEBシステムの開発経験があります。
これらのプログラミング言語でいくつかのシステムを開発してきました。
こう言われると、プログラミングをしたことがない方はハッカーが黒い画面に高速でコードをタイプしている姿が思い浮かぶかもしれません。
しかし実際はそんなことはありません。
コマンドは正確には覚えていない
例えばVBAで最終行を取得する方法がありますが、私は毎回必ず使うのに未だに覚えていません。
ほかにはセルの背景色を変更する時にInterior.ColorIndexというコマンドがありますが、正確におぼえておらず、Interior.Color.Indexだっけ…となったりします。
ですので、ほとんど毎回調べています。
覚える必要はなく検索でいい
コマンドは覚える必要はなく、きちんと理解して使えることが大切です。
なぜなら検索すれば数秒で知りたいコマンドの解説記事が出てきますし、そのコマンドを使用した場合の定石の書き方みたいなものは真似したほうがいいからです。
その定石はよく考えられており、毎回自分で考えるのは時間の無駄です。
たとえばVBAからファイルを取得する場合、Googleの検索欄に「VBA ファイルを開く ダイアログ」と入れて検索します。※ダイアログとはファイルを選択するときに開かれる画面のことです。
そして検索結果の2番目に以下の記事がヒットします。(検索結果の1番目はMicrosoftの公式ドキュメントですが、慣れないうちはわかりにくいと思います。)
そしてその記事の中でこのようなサンプルコードが載せられています。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
Sub Sample2() Dim FileName As Variant FileName = Application.GetOpenFilename(FileFilter:="Excelファイル,*.xls*", _ MultiSelect:=True) If Not IsArray(FileName) Then Exit Sub End If Dim i As Long Dim wb As Workbook For i = LBound(FileName) To UBound(FileName) Set wb = Workbooks.Open(FileName(i)) ・・・ wb.Close SaveChanges:=False Next i End Sub |
複数のファイルを選択し、もしもファイルが選択されなかった場合の処理と、選択されたファイルを最初から最後まで取り出す定石のプログラムです。
配列が返るのでIsArrayでチェックしたりLBoundやUBoundで配列をループさせたりといったことは定石ですし、いちいち自身で考える必要はなくコピペでいいと思います。
でも何をしているか理解する必要がある
おそらくプログラマは1行たりとも意味の分からないコードがあるとソワソワすると思います。コピペするにしてもその処理を通って出てきた結果は自分の予測と一致している必要があります。
たとえば先ほどのコードで
1 2 |
FileName = Application.GetOpenFilename(FileFilter:="Excelファイル,*.xls*", _ MultiSelect:=True) |
とありました。
初心者の方であればきっとこのコードは全く意味が分からないと思います。
でも大抵は同じ記事の中で解説されているので、それを読んで一体何をしているコードなのかは理解しておく必要があります。
理解すると、これはエクセルファイルのみが複数選択できて、FileNameには配列が入ると予測できます。
時短ツールは動けばいい
でもVBAのように業務を時短させるために書くコードを完全に理解して作る必要は私はないと思います。
私はお客様に納品するものでなければ、動けばいい派です。
そもそも初心者にとってVBAは難しいと思います。
まずはコピペでいいのでいろいろなコードを持ってきてつなぎ合わせて動くコードを作って、それが業務効率化になればそれで目的達成なのです。
エラーが出たらそこで調べてようやくコードの意味が分かったりしますし。
さいごに
今回は私なりにプログラミングに対する考え方をお伝えしました。
先ほどお伝えしたように時短ツールは動いて業務が時短できたらいいのです。
そこからプログラムの道を進むにあたっていろいろ綺麗な書き方を学べばいいと思います。
なによりVBAで時短ツールを作ると会社から重宝されます。これは本当です。
そのくらいVBAができる人は少ないです。
もし会社モヤモヤしている方がいたらVBAで徹底的に業務を時短してみるのはいかがでしょうか。
きっと損はしないはずです。
鍵は「検索、コピペ、動いて時短できたら目的達成」です。
この記事を最後まで読んで頂いたあなたには絶対にそれができると思います。
コメント