マクロやVBAに興味を持ち始めてからもう数ヶ月が経ちます。この数ヶ月間でVBAに関する書籍を何冊か購入して読んでみました。また、とにかく見よう見まねで手探りをしながら実際にVBAでコードを書いていって動かしたりしてみました。
この数ヶ月で以上のようなことをしてきて実感したのは、何事も「やってみるもんだな」という感覚です。ここ最近のVBAに関する過去記事は以下のとおり
今までは自分にとってVBAというのは雲の上の存在で、そういったプログラミング言語はシステムエンジニアやプログラマーなどの専門家が使えるもので自分のような素人が触ってはいけないものだと思っていました。
というのも多くの人が経験があると思うのですが、プログラミング言語のコードって初めて見る人にとっては本当にチンプンカンプンです。
自分も初めてプログラミング言語のコードを見たときは、「えっ、何これ・・・。」という感覚でした。とにかく今まで自分が目にしてきたどの言語とも違うみたいな例えるなら、蛇がのた打ち回ったようなアラビア文字を初めて見たときの感覚に近いです。とにかく意味がわからなかったということです。
それが実際にマクロの効果を実感したことをきっかけにVBAに関する本を読んでみた結果、今では説明があればなんとなくわかるようなレベルにはなってきました。
今回は、前回同様ここ数ヶ月でVBAに関して学んできたことややってみたことをちょっとばかり書いていってみます。
VBAのコードは階層構造と細かく指示するという意識で見ると伝わりやすいのかも
人間というものは新しい知識を得るとそれを使ってみたくなるものです。エクセルでVBE(VBAのコードを入力する画面)を開き、本を読んでなんとなく覚えていた知識を駆使して業務で改善できそうな部分のコードを入力したりしてみた時がありました。
前回紹介した『ストーリーで学ぶ Excel VBAと業務改善のポイントがわかる本 』には
- 「まず最初に、プログラムでやりたい処理を日本語で文章に書いてみる」
と良いと書かれていたので、とりあえず業務の改善したい部分の処理を日本語で文章にしてみます。
例えば「5行目に挿入」とか「P5セルに上からオートフィルをかける」とかなるべくエクセルで使われる言葉で具体的に書くことを意識しました。
文章にしたものを元にコードを入力していったわけですが、もちろん最初から上手くいくわけがありません。例えば以下のようなコードを入力したとします。Worksheets(sheet1).Range(E1).Value = Interior.ColorIndex = 5
自分としてはシート名が「sheet1」のE1セルに色をつけたいという意図でコードをを入れてみたのですが、エクセルは次のようなメッセージボックスを出してきます。
「コンパイルエラー:修正候補:式」
「・・・。」
メッセージボックスに書かれている意味はよくわかりませんが、とにかくコードが間違っているということはわかりました。いろいろ試行錯誤したうえで次のように書き直してみました。
Sub 処理1()
Worksheets("sheet1").Select
Range("E1").Select
Selection.Interior.ColorIndex = 5
End Subこれでsheet1シートのE1セルが青色になりました。最初のコードから処理が反映されたコードまでに変えた部分としては、「sheet1」とE1は文字列なので”(ダブルクォーテーション)で囲む必要があったので、まずこの部分を修正しました。
また、コードの中に「Select」という文字がありますが 、オブジェクトを選択状態にします。人間の感覚では「E1」と書けばそれは「選択されている」と思いがちですが、エクセルにちゃんと理解してもらうためには「Select」まで入力しないと「選択している」と認識してもらえないようです。
「Select」というコードからわかるように、エクセルはかなり細かく指示してあげないと上手く動いてくれないことがわかってきました。指定のセルを選択するということ以外にも、VBAでコードを書く際にはエクセルの「階層」を意識した方が良さそうです。
例えば指定のセルを黄色にしたいと思っても、エクセル側では、
- どのブックの
- どのワークシートの
- どのセルか
まで伝えてあげないと処理を実行してくれません。
厳密にはそういったものを省略できるやり方もあるのですが、VBAでコードを書くときにはこういった視点を持たないとエクセルはなかなか処理を実行してくれないことがわかってきました。
次なる課題
上に書いたことは非常に単純なことですが、いろいろ試行錯誤を重ねることにより、繰り返し処理とか分岐処理などのコードもインターネットで調べながらではありますが、使えるようになってきました。
そんなこんなで自分なりにVBAで簡単なコードを書いて、ちょっとした業務の改善もできるようになってきました。
次なる課題は現在のメインの業務の改善です。これは基本的に毎日の仕事でエクセル上での処理も多いです。一見すると複雑そうなのですが、処理を細かく分けていくとひとつひとつはコードには書けそうです。
しかし、それらを組み合わせてひとつのまとまったプログラムにするにはもう少し時間が必要です。逆にこれができてしまえば、エクセル上での処理はマクロのボタン一つで済ませられて、後は目視で書類と照らし合わせるだけという感じになります。
今の会社に入って、仕事を覚えながら業務の改善に努めていたので、結構手持ち無沙汰な状態です。そこからさらに大きく業務が改善できれば、自分が辞めた後も新しく人を雇わずに今いる人たちだけでもまわせそうです。
自分にとっては次なる職場への大きなステップにできそうなので、現在のメインの業務は今の職場においてVBAの卒業課題になるかもしれないです。
あわせて読みたい
- 経理担当者がマクロやフリーソフトと関数を組み合わせて仕事をした結果
- 知識社会は「生産手段」と「労働力」とが一致した社会であり、法人組織から属人組織へと移行していく
- 経理として7社働いてきて感じる必要な職業的な智恵とは
- 経理実務でミスを減らすには定性的、定量的な外れ値や異常値に気づける感覚が必要
- 経理業務に「コンカレントエンジニアリング」の考え方を適用するという発想について
- SendKeysメソッドとFolderfilelistでPDFを自動印刷できないか
- CONCAT関数と検索ボックスを利用してPDFを一括印刷するVBAとマクロ
- ExcelVBAはオートシェープ(図形)やグラフも操作できるのと考えられる用途
- 2018年の振返り━SEの上流工程面と外部アプリケーション操作という課題




















コメント