「ふーん。VBAの文法かぁ・・・。」

どうやらVBAというものには大きく3つの文法に分けることができるようです。

&nbsp;

ここ最近はエクセルのVBAの勉強をしていました。VBAの勉強をするようになった経緯

については以下の過去記事を参照していただければと思います。
<ul>
 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2017/09/23/1206">経理担当者がマクロやフリーソフトと関数を組み合わせて仕事をした結果</a></strong></li>
 	<li><a href="https://www.chishikinosoukonoseiri.com/entry/2017/10/07/1206-2"><strong>経理でマクロやVBAが使えるとミスが劇的に減って仕事が本当に楽になる</strong></a></li>
</ul>
&nbsp;

今回は、この数週間で自分が学んだ範囲のVBAの知識を備忘録として簡単にまとめてい

ってみます。
<h2>VBAは大きく3つの文法に分けることができる</h2>
前回の記事では、VBAというのはプログラミング言語のひとつといったことを書きま

した。プログラミング言語というとどういったイメージがあるでしょうか。

&nbsp;

自分がVBAについての本を何冊か読み終えるまでは、「完全に別世界の言語」「難し

すぎてわからない」「古文書かな？」といったイメージがあり、自分にはとても覚える

ことはできないと思っていました。

&nbsp;

ですが、『ストーリーで学ぶ Excel VBAと業務改善のポイントがわかる本 』という本

を読んでからは自分の今までのイメージが崩れていきました。VBAというプログラミン

グ言語は大きく3つの文法に分けることが出来るようです。以下がそれをわかりやすく

した部分の引用です。
<blockquote>ｐ.6

<img class="alignnone wp-image-2014" src="https://www.chishikinosoukonoseiri.com/wp-content/uploads/2017/10/VBA文法-300x242.png" alt="" width="707" height="570" />

&nbsp;

&nbsp;</blockquote>
&nbsp;

本書にはVBAには、大きく
<ul>
 	<li><strong>オブジェクトに対する操作</strong></li>
 	<li><strong>制御構文</strong></li>
 	<li><strong>関数</strong></li>
</ul>
の3つの文法しかないと書かれています。確かに3つだけしかないと言われるとなんだか

少ないような気もしますが・・・。

&nbsp;

この3つの文法についてもう少し詳しく書いていってみます。
<h3>オブジェクトに対する操作（プロパティとメソッドの操作）</h3>
VBAにおける3つの文法の中で「オブジェクト」というものがあります。これは日本語

に訳すと「対象」といった意味になります。つまりエクセル上での対象とは「セル」と

か「ワークシート」、オートシェイプの「図形」、「ユーザーフォーム」などアプリケ

ーションを構成する要素全般になります。

&nbsp;

そのオブジェクトに対して操作を加えられる方法に「プロパティ」と「メソッド」が

あります。

&nbsp;

「プロパティ」とは日本語に訳すと「状態」といった意味になります。エクセル上での

プロパティとは、例えばA1セルに入力された「オブジェクト」の文字の「太さ」とか「

色」「大きさ」などに対して、

&nbsp;

太くしたり細くしたり、赤色や青色など色を変更したり、対象の文字を20Pの大きさに

するなど、対象に対する性質や状態を変化させることが出来る文法がプロパティです。

&nbsp;

「メソッド」とは、例えばVBAには「ClearContentsメソッド」というセルの値を消去

できるものがあります。また、Copyメソッドを使うと指定したセルを別のセルにコピー

することができます。

&nbsp;

以上のようにオブジェクト（操作の対象）に対して何らかの動作を命令できるものがメ

ソッドと呼ばれるものです。

&nbsp;
<h3>制御構文</h3>
制御構文というのは、メソッドをもう一段レベルアップした感じです。例えばVBAには

ある一定の条件で分岐処理させたい時に使う「ifステートメント」や、ある処理を一定

回数繰り返したい時などに「For...Nextステートメント」という文法があるようです。

&nbsp;

例えばマクロの記録だけだと一方通行の作業しか出来ません。けれども制御構文を使え

るようになると、「この場合ではA、そうでない場合はBの処理をさせる」とか「この処

理を７回繰り返してその間にAが見つかれば次の処理に移る」など様々な条件を加えな

がら処理をさせることができるようになります。

&nbsp;

この制御構文によって柔軟に広い範囲で業務の自動化が可能になります。

&nbsp;
<h3>VBA関数</h3>
エクセルの関数というと合計の「SUM」や平均の「AVERAGE」などを思い浮かべる人

が多いのではないでしょうか。自分もVBAの本を読むまではVBAに関数というものが使

われるとは全然考えもしませんでした。

&nbsp;

VBAにはエクセルのワークシート上で使う関数とは違い、専用の「VBA関数」があります。

例えば「MsgBox」を使うとエクセルの画面上にメッセージボックスが表示できるよう

になります。

&nbsp;

ユーザーに対して印刷するかどうかの質問で「はい」か「いいえ」で答えさせたり、何

らかの処理で不具合が生じた時にエラーメッセージが表示される時に出てくるあれです。

&nbsp;

他にもVBA専用の関数があり、これらを上手く使うことによって従来では考えられなか

った複雑な処理でも自動化できるようになります。
<h2>なんでマクロの記録ではなくてVBAが必要なのか</h2>
マクロをちょっとでもいじったことがある人ならわかると思うのですが、単純な繰り

返し処理を自動化させたいなら非常に便利な機能です。こんな便利な機能があるのに

なぜVBAなんてものがあるのでしょうか。

&nbsp;

それはマクロには「VBAじゃないと出来ない処理」があるからです。いくつかのVBA

の本を読んでわかったのは、

&nbsp;

マクロの記録だけで実現できるのはVBAにおける3つの文法の中の「オブジェクトに対

する操作」だけで「制御構文」と「VBA関数」というものが扱えないからです。これ

によって複雑なVBAプログラムをつくることができないとのこと。

&nbsp;
<h2>まとめ</h2>
今までVBAという分野は、経理として何年か仕事をしてきた自分にとっては畑違いで

あり、自分にとって全然関係がないものだと思っていました。

&nbsp;

そのため、以前購入したVBAに関する本もどうしてもモチベーションが上がらず、途

中まで読んでそのままの状態でした。

&nbsp;

しかし「論より証拠」とはよく言ったもので、実際にマクロの動作を見せられてその

速さと効果を実感した時には「これは自分に必要なものだな」と感じ、ここ数週間で

数冊を読み終えてしまいました。

&nbsp;

昨今は日本が人口減少期に入り、様々な業界で人手不足が叫ばれています。そのため

いろいろな方法で業務の自動化、無人化の試みがなされています。

&nbsp;

そのような今後の世界を生きる人にとってVBAという知識は、経理業務や事務作業の

自動化などをしていくうえで非常に役立つのではないでしょうか。

&nbsp;
<h2>あわせて読みたい</h2>
<ul>
 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2017/01/30/202912">プログラミングの「おもしろさ」とはこういうことなのだろうか？と思ったこと</a></strong></li>
 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2017/04/23/143607">今後のスキル偏重型技術革新で、機械といかに協力できるかが問われてくる</a></strong></li>
 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2017/02/26/135515">今後の社会において、なぜテレワークが必要になるのか━働き方改革という発想</a></strong></li>
 	<li><strong><a href="https://www.chishikinosoukonoseiri.com/entry/2016/07/23/212300">労働集約産業、資本集約産業から知識集約産業へ━今後個人が生きていくうえで必要なもの</a></strong></li>
 	<li><a href="https://www.chishikinosoukonoseiri.com/entry/2017/03/12/141554"><strong>経理として7社働いてきて感じる必要な職業的な智恵とは</strong></a></li>
</ul>