こんにちは!JIMOVEの山口です。
今回は私がどのようにマクロのVBAと出会い、今まで付き合ってきたか、話をしたいと思います。
きっかけは前任者の退職
マクロを初めて触ったのは、会社で使用するマクロを作成していた担当者が退職し、誰も触ることができず、当時、社内でパソコンが得意と思われていた私に話が来たのがきっかけです。
これは私がストアカ(セミナー募集サイト)にて、セミナーを実施した際に受講生の方にも聞いたのですが、この理由が結構多かったように思います。
「前任者が退職してどうしても触らないといけなくなった」
「今、マクロを触っている人が1か月後に退職することになって・・・」
など、予定はなかったけど、触らざるを得なくなってしまった方が一定数いました。
とはいえ、私自身も、マクロを使用したことがありませんでしたので、VBAの見方どころか、マクロの作成に必要な「開発」タブの存在すら知りませんでした。
そのため、一からVBAについて調べ、すでに出来上がっているプログラムを見た上で、その内容を一から解読する・・・
根気強い作業でしたが、VBAは英語の単語を理解していると理解できることが多かったのですが、学生時代、私自身、英語はとても苦手で、その英文を一つ一つ和訳するイメージだったので、非常に道のりが長かったのを覚えています。
VBAのいいところはほとんどが和訳できること
VBAのいいところはいくつかありますが、1つ目は、まず何といっても、Excelであることです。これは、事務作業をするにあたり、普段、私たちが利用するソフトの中で一番といっていいほど、使うソフトではないでしょうか?
そのため、私自身も比較的スムーズに取り組むことができました。
その中の機能として使えるので、見た目や、操作感はなじみがあることです。
2つ目として、パソコンのプログラミング言語と呼ばれるものは複数ありますが、このExcelで使えるVBAはほとんどが英語と同じ意味で使われることが多い、ということです。
たとえば、よく使うRangeは「範囲」、Cellは「セル」、Sheetは「シート」のようにとても分かりやすい点です。
既存のプログラムを見ることが最短の習得への道?
これを見ていただいているあなたはVBAのプログラムを実際に見たことがありますか?
まだ始めたての場合、様々な本や、サイトをみて、それぞれの動作のプログラムについては、見ることがあると思います。
一番、VBAを覚えられない理由は、それぞれ別のものとして理解してしまうからだと私は考えます。
英語の文章でもそうですが、一つの単語だけでも、たしかに意味は通じますが、会話をしようと思ったらいくつかの単語を組み合わせ、さらに会話だけなく、何かを説明するためには、多くの文章を書く必要があります。
断片的には、「○○の動作をしたい」「セルの背景色をつけたい」など、調べれば出てくるのですが、結局それをどう組み合わせたらいいか?がわからないから、VBAを理解することができないのです。
私の場合、前任者が退職し、すでにマクロとして動いているVBAの中身を見れたのはラッキーでした。
それでも、プログラムができているとはいえ、「マクロの記録」という機能を使って組み合わせたものでA4に印刷すると10ページにも及ぶ内容でした。
そこから、そのマクロが動いていた「元データ」に変更があったため、プログラムに修正を加えなければけませんでしたので、その10ページの内容を解読し、まずは必要な部分だけを修正することが精一杯でした。
VBAを知るとシンプルにプログラムが書けるようになる
今後もその修正が発生する可能性があることから、このままのプログラムではいけない、と考え、改めて全体を見直しを行いました。
「マクロの記録」で作成されていたので、すべてのマウスの動作や、キーボードの操作がすべて載っていました。そのため、A1からA4を選択するために、カーソルを動かせばそのプログラムも記載され、セルの選択しなおす場合に、誤ってB4を選択し、その後に正しいA4を選択するなど、すべてが記載されていました。
今ならわかりますが、「マクロの記録」でプログラムを記載してくれるのはありがたいことですが、無駄に長くなってしまう、という危険性があるということです。
いろいろな書籍や、サイト、動画を見て、やったこととしては、それぞれのパーツの意味を理解する、ということです。
少しずつ、消しては動かし、消しては動かし、を繰り返し、誤った動作になっていないか確認をしながら、不要なものを削っていきました。
結果、A4、3ページで収まるプログラムになりました。
たとえばの例で挙げると、セルのコピー1つとっても、A1からA3へコピーする、というプログラムは「マクロの記録」で作成すると、下のように4行記載になります。
Range("A1").Select
Selection.Copy
Range("A3").Select
ActiveSheet.Pastet
それに対し、VBAを学習すると、1行で記載することができます。
Range("A1").Copy Destination:=Range("A3")
このようにすべてのプログラムを見直し、修正をしたことで、VBAの基本的な内容を知ることができ、結果的にVBAの基礎を知ることができたと思っています。
とはいえ、道のりはまだまだ長く、ここからいろいろなプログラムを作成したり、自分なりにまとめてセミナーを開催したり、動画にまとめて講座を作ったりして、今に至ります。
私の方針として、VBAを始めるためには、まずは最低限の基礎を「実際の動作を自身の手を動かしながらプログラムを作成する」ことが近道だと思っています。
それは、1つのプログラムの動きを0から入力することにより、コピペだけで作ったプログラムよりも、何倍もあなたの役に立つと思っています。
ブログだったり、動画などで、様々な情報をお伝えするので、ぜひ一緒に学んでいきましょう!
コメント