【VBA初心者 #6】自動化しようと思った時の流れ
こんにちは、HALUです。
今回は作業を自動化しようと思った時の、まず何からするの?という作業の流れを初心者の方向けにお伝えしようと思います。
おおまかには以下の手順をすることによって、作業を自動化していきます。
1.データのスタートからゴールの流れを確認する
2.マクロにコメントを書きだし
3.データの入力や出力に必要なマクロの書き方を調べる
という順序にするのが良いと思います。
以下で、具体的に説明していきます。
今回、例として客単価を計算する表を作成していたとします。
1.データのスタートからゴールの流れを確認する
今回作りたいのは、売上÷客数を計算して客単価を自動で全て求めるというプログラム(マクロ)だとします。
ここで、データのスタートからゴールをまず考えましょう!
今回使うデータは、売上と客数の数字が分かれば客単価が計算出来ますね。
ただし、自動化する際はそれだけでは足りません。
マクロを作る際には、データをどこから取るのか、どの範囲に対して出力するのかという位置情報のようなものが必要なんですね。
売上はB列の2行目以降、客数はC列の2行目以降からデータを取得します。
そして、客単価はD列の2行目以降に出力していくことになります。
これが位置情報になります。あまり馴染みがないことを説明していると思いますが、この情報を意識することでマクロが書ける人へグッと近づきます。
上記の情報を整理して流れを書くと、こんな感じになります。
このような感じの流れを、初めのうちは頭の中だけで考えず図にして書いてみることをお勧めします!
2.マクロにコメントを書きだし
次にマクロに作業内容を書きだしていきましょう。
マクロの土台であるSubからEnd Subまでの間にコメントを書きました。
内容は1で書きだしたものをそのまま書いているので簡単ですね。
Sub 客単価()
' 項目の最終行を取得
' B列から売上を取得
' C列から客数を取得
' 客単価を計算
' D列に客単価を出力
End Sub
マクロを書き始める時はまずコメントを書くのをお勧めします。コメント自体は処理に影響が無いもので、全体の流れがあっているかを随時確認できます。
3.データの入力や出力に必要なマクロの書き方を調べる
次にマクロの書き方を調べます。今から言うことは僕が一番大事だと思っていることですが、
「プログラミングに必要なのは一つ一つの書き方を覚えるスキルよりも、調べるスキルである」
ということです。
どういうことかと言うと、例えば今回初めのコメント文<項目の最終行を取得>をコードにしようとしたとき、ここで必要なのは最終行を取得するための書き方↓
Cells(Rows.Count, 1).End(xlUp).Row
ではなく、「最終行を取得するコードがvbaにはあったよね」という出来るか出来ないかの知識の方が重要なのです。これさえ分かっていると、後は書き方を調べればすぐ出てきます。コードの一言一句をわざわざ記憶する必要はありません。
後は、調べていると出来そうなコードというのがいくつか候補として出てきますが、何が正解か分からない時は取りあえず試すということをします。これも調べるスキルですね。
上の話をまとめるとこうなります。
ここでやっていくのは、
・コメントに書いてあることを単語で 「VBA 最終行 取得」等で調べて、実際に値を取得出来る方法を探す
ことです。
そして順番にコメントで書いたところをコードにしていくと、プログラムが完成します。
上の2行であーっという間に完成みたいな紹介をしましたが、コードを書き始めてからのやり方はまた今度お話ししようと思います。
今回は作業を自動化しようと思った時に、実際にどうやって自動化していくかを紹介して手順を軽く説明しました。
作業を自動化したいけど、まずどうやって自動化しているのかよく分からないという方はぜひ参考にしてください。
分からないところは質問してもらえばお答えできると思います。
他にも主はコンサル等や実際に自動化・効率化の開発も請け負っておりますので、気になる方は無料相談からまずお待ちしております。
この記事が気に入ったらサポートをしてみませんか?