筆者のVBA歴は15年以上になります。
ExcelVBA、PowerPointVBA、WordVBA、AccessVBAひと通り経験があります。
VBA以外では .NET C#、PHP、JavaScriptでWEBシステムの開発経験があります。
これらのプログラミング言語でいくつかのシステムを開発してきました。
こう言われると、プログラミングをしたことがない方はハッカーが黒い画面に高速でコードをタイプしている姿が思い浮かぶかもしれません。
しかし実際はそんなことはありません。
①コマンドを覚える必要はない
例えばVBAで最終行を取得する方法がありますが、私は毎回必ず使うのに未だに覚えていません。
ほかにはセルの背景色を変更する時にInterior.ColorIndexというコマンドがありますが、正確におぼえておらず、Interior.Color.Indexだっけ…となったりします。
ですので、ほとんど毎回調べています。
②覚えるのでははなく検索する
コマンドは覚える必要はありません。
検索すれば知りたいコマンドの解説記事が出てきます。また、そのコマンドを使用した場合の定石の書き方みたいなものは真似したほうがいいからです。
その定石はよく考えられており、毎回自分で考える必要はありません。
たとえばVBAからファイルを取得する場合、Googleの検索欄に「VBA ファイルを開く ダイアログ」と入れて検索します。※ダイアログとはファイルを選択するときに開かれる画面のことです。
そして検索結果の2番目に以下の記事がヒットします。(検索結果の1番目はMicrosoftの公式ドキュメントですが、慣れないうちはわかりにくいと思います。)

そしてその記事の中でこのようなサンプルコードが載せられています。
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
複数のファイルを選択し、もしもファイルが選択されなかった場合の処理と、選択されたファイルを最初から最後まで取り出す定石のプログラムです。
LBoundやUBoundで配列をループさせたりといったことはコピペでいいと思います。
③動けばいい
業務を時短させるために書くコードを完全に理解して作る必要は私はないと思います。
私はお客様に納品するものでなければ、動けばいいと思います。
そもそも初心者にとってVBAは難しいと思います。
まずはコピペでいいのでいろいろなコードを持ってきてつなぎ合わせて動くコードを作って、それが業務効率化になればそれで目的達成なのです。
エラーが出たらそこで調べてようやくコードの意味が分かったりしますし。
さいごに
今回は私なりにプログラミングに対する考え方をお伝えしました。
先ほどお伝えしたように時短ツールは動いて業務が時短できたらいいのです。
そこからプログラムの道を進むにあたっていろいろ綺麗な書き方を学べばいいと思います。
なによりVBAで時短ツールを作ると会社から重宝されます。これは本当です。
そのくらいVBAができる人は少ないです。
もし会社モヤモヤしている方がいたらVBAで徹底的に業務を時短してみるのはいかがでしょうか。
きっと損はしないはずです。
この記事を最後まで読んで頂いたあなたには絶対にそれができると思います。
コメント