私は10年以上エクセルVBAを使っています。
日々の業務の効率化を目指して、VBAを使ってたくさんのマクロを作ってきました。
後輩たちにも、VBAの使い方を教えてきましたが、VBAの学習の壁はなかなか高いようで、
自分でVBAのコードを組んで使えるようになった人はほとんどいません。
はじめは、VBAを勉強しようとするのですが、やはり途中で挫折して、学習をやめてしまうのです。
かくいう私自身も、大学生時代には、C言語の授業でプログラムは挫折して、単位を落としてしまっています。
その当時はプログラムなんか二度とやらないだろうと思っていました。
そんな私でも、現在はVBA、Python、Google App Scriptといろいろな言語でプログラムを組んでいます。
そんな私が思う、VBAでのプログラミング学習を挫折(途中でヤメてしまわない)しない3つの考え方ついて解説していきます。
考え方①:プログラミングを学習することを目的としない
私の仕事はプログラマーではなく、品質管理です。
なので、仕事の目的は品質管理であって、プログラムを作ることではないです。
VBAを使っている人の多くは、私と同じく別の目的(仕事)があって、
業務でエクセルを使っていて、そのエクセルの作業を自動化させたり、効率よく仕事をするためにVBAを学習したいと考えます。
この時に、
VBAの学習 = 実際の業務
ではないのです。
例えば、VBAの学習をするときに、一番最初に学習をすることが
・Msgbox “こんにちは”
といった「出力」のコードを入力して、ダイアログボックスに「こんにちは」と表示させることから始めるでしょう。
しかし、この「プログラム」と「自分の業務(やりたいこと)」でつながりが見いだせないのです。
・パソコンの画面に「こんにちは」と表示をさせて何の意味が?
と思ってしまいます。
プログラミングとはあくまで「パソコンに指示を出す行為」にすぎないです。
なので、VBAの学習をするときには、「自分がどういう事がしたいのか」という「目的」を持って学習すると挫折しないでプログラミングの学習を続けることができます。
・いくつかのエクセルファイルから情報を抽出して、一つのエクセルに集約する
等といった作業をVBAで自動化させたいとしたら、
・GetOpenFilenameメソッドで取得するファイル名を取得する
・取得したファイル名を「変数」に格納する
・Workbooks.Openメソッドでファイルを開く
・任意のシートがそのファイルにあるか調べる
・なかった時の分岐条件は?
・抽出したデータの貼り付け場所は?
・Do~Loop構文をつかって、空白のセルを見つける?
・すべての処理が完了したらダイアログボックスに「完了」と表示させる?
と多くの処理を学ばなくてはいけません。
この一つ一つの処理が自分の「目的」ときちんと一致していれば、プログラミングの学習のモチベーションも維持することができます。
VBAの学習をするときは、「VBAの学習が目的」ではなく、「VBAを使って処理をする目的」をもっておこないましょう。
考え方②:完璧に全てを覚えようとしない
プログラミングの目的はパソコンに指示を出すことです。
実際のコンピューターの言語は「0と1の組み合わせ」でできています。
なので、プログラミング言語というものは、日本人がわざわざ英語で指図書を書いて、さらに、その指図書をイタリア語に翻訳するといった作業を行っています。
なので、世の中にはたくさんのプログラミング言語があり、どんどん新しいものも出てきす。
VBAを完璧にマスターしたところで、10年後には新しい言語がエクセルに搭載されて、そっちが主流になっているなんてこともよくある話です。
エクセルの自動化をPythonで行う本などもたくさんありますし、
新しいオフィスの機能として「パワーオートメイト」といった、VBAでのプログラミングができなくても、直感的に自動化ができるようなアプリケーションまで登場しています。
しかし、言語が変わろうと、新しいアプリケーションが登場しようと、
・順次実行
・繰り返し
・条件分岐
といった基本的な概念は、どの言語、アプリケーションにも共通しています。
なので、最初はメソッドやプロパティを受験の英単語のように努力して覚えるより、
たくさんのVBAプログラムを作って
・的確な指示を考える力
・問題を読み解く力
を身に着けるようにしましょう。
メソッドやプロパティはつどつどインターネットで検索すればOKです。
考え方③:バグが起きても気にしない
プログラムを組むという行為は、常にバグとの闘いでもあります。
どんな天才プログラマーでも一発でバグのない完璧なプログラムを作ることはなかなか難しいです。
プログラムのバグを修正する作業を「デバッグ」というのですが、
この「デバッグ」こそが、VBAプログラミングの最大の勉強であると考えましょう。
会社でVBAのコードを書いてマクロを作っていくと、初めのうちは、自分で作って、自分で使っているでしょうが、慣れてきたり、仕事を他のメンバーに引き継いだりして、自分がつくったマクロを不特定多数の人間が使うことがよくあります。
すると、自分ひとりで使用していたときには、考えられないバグが発生したりします。
例えば、
・数字を入力するとこに文字列で入力していたり
・大文字で入力するところが小文字になっていたり
・選択しているセルが違っていたり
と予想もしていなかった使い方をしてしまった結果のバグであれば、
コードを改善するチャンスでもあります。
プロのプログラマーが作成して、パッケージ化し販売したアプリケーションであれば、バグが発生すると大変でしょうが、
我々のようにエクセルをVBAで自動化させたりするのに作ったプログラムなら、ましてや、初心者もうちは、
プログラムを書く→バグ発生→デバッグ
といった感じで学習していくのが一番成長しやすいです。
まとめ
この記事では「エクセルVBAを学習するときに挫折しない3つの考え方」について解説しました。
考え方①ではプログラミングを学習することを目的としない
考え方②では完璧に全てを覚えようとしない
考え方③ではバグが起きても気にしない
を解説しました。
これからどんどん社会全体的にRPAやDXといったデジタル化は進んでいくでしょう。
報告書はレポート用紙に手書きで文書をつくり、方眼用紙にグラフを作って・・・
といった時代からエクセルやワードといったアプリケーションを使った仕事の進め方に変化しました。
しかし、その仕事の進め方においてもエクセルで、数字を入力して、グラフを作って・・・
とひとつひとつ作業者が手作業で行っていくのではなく、
どんどんと自動化して当たり前のような時代になっていくでしょう。
もはやVBAが時代の最先端とは言えませんが、
VBAはプログラミングの環境構築のしやすさからみてもプログラミングの勉強に最適だと思います。
まず、自分の業務からVBAを使って自動化させていくことから初めてみてはいかがでしょうか?
0 件のコメント:
コメントを投稿