【Excel VBA】プログラムコードの構成について

皆さんこんにちは

Pycelです

 

今回のテーマ

今回のテーマはVBAの構成」についてです。

VBA初心者の方は特にそうですが、VBAの全体像を想像できていない方が多いように感じます。

どこでどんな動きをしてほしいのかがイメージできていないと、想定していた動きにならない!といった事態になりかねません。

全体像をイメージしながらコードをかけるようになりましょう。

 

プログラムを作成する際に意識する事

VBAに限らずプログラムを作成する際に意識するべきポイントはいくつかあります。

その中でも、「大枠→中身」を意識する事がとても重要です。

 

そもそもプログラムってどんな事するもの?

そもそもプログラムを作成する目的が何か考えたことはありますか?

プログラムは、人間が行う作業をPC側に処理させるために作成します。

つまり、人間が行う作業のうち、誰ががやっても同じ結果になる作業に関しては

PCに処理させた方が速いので、やり方の手順書(マニュアル)を作ってあげるわけです。

 

プログラムを作るときの2つのピース

プログラムを作成するときによく使う構文が2つあります。

「繰り返し処理」と「条件分岐処理」です。

これらは、各プログラミング言語ごとに使用する構文が違います。

しかし、細かい違いはあるものの、どの言語でもこの2種類の処理方法を抑えておけば

ほとんどのプログラムの作成が可能です。

あとは、この2つの処理をどのように組み合わせていくか、を考えていくだけです。

ピースの組み合わせ

プログラムの大枠は、繰り返し処理で作成します。

先ほども書きましたが、プログラム自体がある作業をPCに代行させることを目的に作成するものです。

つまり、基本的には繰り返し処理だけさせてあげればよいわけです。

あとは、ひとつの作業だけ代行させているとどうしても例外的な作業が発生してしまします。

そういった作業が見込まれる場合に条件分岐処理を行うわけです。

↓イメージとしてはこんな感じです。

f:id:pycel_master:20210905180033p:plain

オレンジの枠の中に条件分岐処理を書くことで、繰り返し処理の中で例外的な処理をさせることが可能になります。

画像の様に大枠として繰り返し処理を作り、その中に条件分岐処理などをあてはめていくことで

自然とコードを書いていくことができるようになります。

最後に

VBAの構成は、複雑なコードになればなるほど重要な考え方になります。

どこでどんな処理をさせるのか、指示を出す側がイメージしていないとPCも思った通りの処理をしてくれません。

VBAについても構成を考えながらコードを書けるようになりましょう。

【Excel_VBA】マクロが上手く組めない!! 実は、Excelの表の作り方が悪いかも… マクロを見直す前に表を見直す

みなさんこんにちは

Pycel(ぴくせる)です。

 

今回のテーマ

今回のテーマは、「ExcelVBAを組む前の下準備について」です。

VBAを組む前にどのようなことを準備しておけばよいのか、注意すべき点はどこなのかについて説明していきます。

 

実は見落としがちな表の構成について

VBAを組む前の下準備で大切なことは、「扱う表の作り方」です。

VBAを組む際に表の作りが悪いとコードが複雑化します。それにより、"表に合わせる"事が目的になってしまい、まとまりのないコードになってしまいます。

コードが簡単に記述できる表を作成する事で短時間で学習を進めていきましょう。

 

表の作り方

そもそもなぜ、VBAの下準備として"表の作り方"が重要なのでしょうか?

それは、ユーザー(表を使用する人)が使うのはVBAではなくシート上の表だからです。

ここで扱いやすい表がどのようなものなのか考えてみましょう。

初期設定のExcelでは、[Enter]キーを押すと、ひとつ下のセルに移動します。

[Tab]キーで右隣のセルに移動することも可能ですが、通常のデータ入力では[Enter]キーの使用頻度が圧倒的に高いでしょう。

そのため、Excelでは基本的に下方向に入力セルが移動していく方が、ストレスなくデータ入力が可能になります。

また、横方向にデータを入力していく表だと、入力するデータの内容によってはセルの横幅が変わってしまい見づらい表になってしまいます。

 

VBAコードにも影響が…

VBAを組み始める前に表を作り込んでおいた方がいい理由は他にもあります。

それは、コードの複雑化です。

私の会社の先輩で下図のような表を作る先輩がいます。

何がいけないのでしょうか?

f:id:pycel_master:20210904192706j:plain

この表でいけない点は、ひとつのデータを複数行にわたって入力しなければいけない点です。

このような表でVBAを組む場合、コードが複雑化しやすいです。理由としては、ひとつのデータに対して行番号と列番号の2つの数字を追いかけながら、どこにどのデータを入れ込んでいくのかを考えなければならないからです。

考えることが増えるほど、ミスが多くなります。そして、エラーが出た際にもどこが原因なのか明確になりずらいです。

なので、表を作成する際はできるだけ1行1データを意識して作成しましょう。

f:id:pycel_master:20210904192710j:plain

 

先を見通して表を作ろう

表を作り込む理由として、「VBAの構成が見えてきやすい」という点も挙げられます。

VBAは、初めての方からすると複雑なことをしているように見えるかもしれません。

しかし、実はほとんどのVBAが"繰り返し処理"と"条件分岐"の二つを組み合わせているだけです。

なぜこの二つの組み合わせで複雑な処理ができるようになるのかというのは下記のとおりです。

 

VBA(プログラミングなども含む)は、単純作業の繰り返しを自動化する目的で使用している

・同じ作業だけを繰り返していたら便利なプログラムにはならないので、目的に合わせて条件分岐する必要がある

 

反対に上記の2点を覚えておくことで

 

・どんな作業を繰り返しすればよいのか

・繰り返す中で必要な分岐条件は何なのか

 

という事を意識して表を作る事ができます。

この2点を抑えておくことで、VBAを書き始めるころには大まかな構成が決まります。

構成が決まってしまえばあとはコードを書いていくだけですね。

 

最後に

いかがでしたでしょうか?

VBAは便利なものですが、初心者の方には少し難しく感じるものかもしれません。

でも、つまずく原因はVBAではなく、VBAを使って処理しようとしていた表の方にあるのかもしれません。

読者の皆様にとってこの記事が、もう一度データの扱い方について考え直すキッカケになれば幸いです。

今後も、コードの書き方に加え、考え方に焦点を当てた記事を書いていきますので他の記事も見てみてくださいね。