学習方法

VBA初心者必見!VBA初心者が最初に勉強すべき5つの手順

Excelで同じような作業をしていると、もっと楽に作業を行いたいと思いませんか?そんな時はVBAで自動化すると便利です。

この記事では、VBAを勉強したいと考える初心者が「まず何から手をつければよいか」について解説します。また、初心者が陥りやすいエラーのデバッグの方法についても解説します。

VBA初心者って何から勉強すれば?


VBA初心者の勉強手順がわかる!

うまく動かないけどどうすれば?


原因の解析の方法がわかる!

VBAとは?

VBAとは、「Visual Basic for Applications」の略で、ExcelやWord、AccessなどのMicrosoft Office製品で使用されるプログラミング言語です。

VBAはマクロを作成してタスクの自動化や処理の最適化を容易にするために使用されます。まずマクロについて、そしてVBAとマクロの違いについて解説します。

マクロとは

マクロとは、タスクの自動化を行う機能です。
例えば、データの集計や分類、シートの印刷などさまざまなExcel上での作業を自動で行わせることができます

VBAとマクロの違い

VBAとマクロは似ていますが、異なります。

  • マクロ:タスクを自動化する機能
  • VBA:マクロを記述するプログラミング言語

つまり、Excelでの作業を自動化するマクロの中身を、プログラミング言語VBAで記述することになります。

以下の記事ではこのVBA学べるおすすめスクールを紹介しています。

VBAとマクロの違いとは?おすすめのスクールも紹介 「VBAを習得して、Excelでの業務を効率化したい」 「VBAのコースがあるスクールを知りたい」 上記のように...

VBA初心者が最初に勉強すべき5つの手順

「いつもの作業を楽にしたい」「VBAで自動化したい」と思っても、何から手をつければよいか、悩んでしまいますよね?

VBAを学んだ先のゴールは、

VBAで作業を自動化する

ことです。

VBAはプログラミング言語なので文法が存在しますが、初心者がVBAを学ぶ際には文法を学習していく方法ではなく、実践しながら慣れていく方法をおすすめします。仮に文法を100%覚えても、それを使えないとゴール(VBAでの作業の自動化)にたどりつけないからです。

そこでここでは、VBA初心者が最初に勉強すべき手順を5ステップで解説します。

Step1:効率化したい作業内容を明確にする
Step2:マクロ自動記録で効率化を体験する
Step3:作成されたコードの内容を理解する
Step4:よく使用されるコードを覚える
Step5:少しコードの内容を拡張してみる

Step1:効率化したい作業内容を明確にする

まずはじめに、どういった作業内容を自動化したいのか」を明確にします。漠然とした目標ではなかなか学習が前に進みません。

そこでおすすめするのは、今現在自分が実際にExcelで行っている作業の自動化です。そうすると手作業で行う場合と自動化で行う場合の差がわかりやすく、VBAの利点がわかりやすいためです。

またその際、最初のうちは難易度の低いものを選択することをおすすめします。難易度が高すぎると、自動化するためのマクロも複雑になり、必要なVBAスキルも高くなってしまい、初心者が挫折する一因となるためです。

初心者におすすめ!まず最初に取り組む自動化

・1つのシート内での自動化
 ⇒複数のブック(ファイル)、複数のシートでも自動化はできますが、まずは1つのシート内での自動化をおすすめします。

・データの自動集計、グラフ化
⇒売上金額やアクセス数など、さまざまなデータを集計する作業の自動化。また、その結果のグラフ化も自動化できます。

・セルへ値の自動入力
⇒入力した数値や文字を指定のセルに入力する作業の自動化。住所録や顧客名簿、出納帳などに活用できます。

VBAによるExcelマクロには実現が困難なケースもあるので、最初のうちは上記の分野程度に抑えることをおすすめします。

Step2:マクロ自動記録で効率化を体験する

Excelにはマクロの自動記録機能があります。これは作業内容をVBAを使って自動で記録してくれる機能です。
まず最初はVBAを使ってマクロを自分で作成するのではなく、この自動記録機能を使って効率化を体験することをおすすめします。

各支店の1年間の売上金額について、各月の合計と各店舗の合計を計算する作業を例に、マクロの自動記録機能について解説します。
①「開発」タブの「マクロの記録」をクリックします。

②新たに開いたマクロの記録ウィンドウで「マクロ名」を定義して「OK」をクリックします。(ここではMacro1とします)

 

 

 

 

 

③作業を記録する状態になっているので、Excelに作業内容を入力します。ここでは各月の合計を求めるために、”=SUM(B3:B9)”と入力し、同じように他月の合計、各店舗の合計を入力します。

④全て作業内容の入力が終了したら、「開発」タブの「記録終了」をクリックします。

⑤記録した内容を確認するため、「開発」タブの「マクロ」をクリックします。

⑥マクロ名に作成したマクロを指定して、「編集」をクリックします。

 

 

 

 

 

⑦新しいウィンドウが開き、記録した作業内容を確認できます。

このウィンドウはVBE(Visual Basic Editor)と呼ばれ、マクロをVBAで記述するエディタです。マクロの作成や編集する際にはこのウィンドウで行います。

Step3:作成されたコードの内容を理解する

Step2で作成したコードの内容を確認しながら理解します。
実際に使用されているコードをネット検索や書籍で調べて、意味を理解していきます。

1行目、18行目:Sub Macro1()、End Sub

Macro1という名前のマクロの、開始点と終了点を示しています。”Sub”と”End Sub”の間にマクロのコードを記載します。

2~6行目:’Macro1 Macro

シングルクォーテーションの後の記述はすべてコメントとなります。

7行目他:Range(“B10”).Select

セルの範囲を指定して、その範囲をアクティブにします。”B10”の場合はB10セル
を、”B10:M10”の場合はB10からM10セルを指定してアクティブにします。

8行目他:ActiveCell.FormulaR1C1 = “=SUM(R[-7]C:R[-1]C)”

アクティブなセルに対して、R1C1形式(行番号と列番号を使ってセルを参照する方法)を使用して式を設定しています。

“=SUM(R[-7]C:R[-1]C)”はSUM関数を使用し、アクティブなセルから7行上のセ
ルから1行上のセルまでの範囲(垂直方向)の合計を計算しています。R[-7]Cはアクティブなセルから7行上のセルを意味し、R[-1]Cは1行上のセルを指します。

10行目他:Selection.AutoFill Destination:=Range(“B10:M10”), Type:=xlFillDefault

アクティブなセル(Selection)から始まり、指定された目標範囲(Destination)に
対してオートフィル(自動入力)が適用されます。Type:=xlFillDefaultは一般的なデ
フォルトのオートフィル動作を指定しています。

ここからもわかるように、マクロはVBAでEXCEL上での1つ1つの作業(セルを選択、SUM関数で合計を計算、オートフィルなど)を1行ずつ記載します。

Step4:よく使用されるコードを覚える

自分が行いたい作業内容をマクロで作成するにはVBAで記載する必要があります。その文法を全て調べながらコード作成を行っても問題ありませんが、よく使用されるコードについては覚えておくと便利です。
ここではよく使用されるコードの例を挙げます。

セルに値を代入する Range(“A1”).Value = “Hello, Excel VBA!”
セルの値を取得する Dim value As Variant
value = Range(“A1”).Value
ループ処理(Forループ) For i = 1 To 10
‘ ここに処理を記述
Next i
条件分岐(IFステートメント) If Range(“A1”).Value > 10 Then
‘ ここに処理を記述
Else
‘ ここに別の処理を記述
End If
ワークシート内の最終行を
取得
Dim lastRow As Long
lastRow = Cells(Rows.Count, “A”).End(xlUp).Row
セルの書式を設定する Range(“A1”).NumberFormat = “0.00”
データのフィルタリング Range(“A1:B10″).AutoFilter Field:=1, Criteria1:=”Value”
セルの削除 Range(“A1”).Delete Shift:=xlUp
メッセージ表示 MsgBox “Hello, Excel VBA!”, vbInformation
ワークブックの保存 ActiveWorkbook.SaveAs “C:\Documents\MyWorkbook.xlsx”

Step5:少しコードの内容を拡張してみる

Step3で作成したコードに対して、Step4の内容を使ってコードの内容を少し拡張してみてください。
例えばセルの値を取得して別のセルに値を代入したり、メッセージ表示させたり、ワークブックの保存など、少しずつ拡張しながらVBAを使ったマクロの作成に慣れていくと、どんどんVBAスキルも向上していきますので、頑張りましょう。

以下の記事ではVBAのおすすめ学習サイトを紹介しています。

VBA独学者必見!スキルレベル別VBA学習サイト3選!ロードマップ紹介VBAを独学したくて学習用サイトを探している若手・中堅エンジニア必見!スキルレベル別に厳選した無料で学習できるおすすめサイト3つを紹介します。学習サイトのロードマップも提示し、迷うことなくVBAの学習を進められます。...

VBA初心者が陥りやすいエラーのデバッグについて

VBAでマクロを作成していると、プログラムが途中で止まったり、想定通りの動きをしてくれないことがよくあります。これは中級者や上級者でもよくあることなので、想定通りの動作をしなくても、慌てずその原因個所を修正すれば大丈夫です。

その想定通りの動作をしない原因を探して修正することを「デバッグ」作業といいます。
デバッグ作業の具体的な方法は主に3種類あります。

ステップ実行 コード1行ずつ実行しながら動作確認する方法
ブレークポイント コードの途中で処理を止めて動作確認する方法
Debug.Print イミディエイトウィンドウに値を出力して動作確認する方法

ここではそのデバッグ方法について解説します。

ステップ実行

ステップ実行は、コードを1行ずつ実行しながら動作確認を行うデバッグ方法です。

VBEを開き、F8キーを押します。(もしくは「デバック」→「ステップイン」をクリックします)

コードの横に”⇒”が表示されます。F8を押すごとに1行ずつ”⇒”が下に移動してコードが実行されるので、正しく動作しているか確認します。
また、途中でデバッグをやめる時は、”□”ボタン(リセット)を押すことでデバッグを修了することができます。

このようにして想定していない動作をしている場所を特定し、適切なコードに修正します。

ブレークポイント

ブレークポイントは、コードの途中で処理を止めて動作を確認するデバッグ方法です。

VBEを開き、処理を一時停止したいコード横のグレー部分をクリックします。

コードの横に”●”が表示されます。この状態でマクロの実行(”▶”ボタン)をすると、指定の場所までマクロが実行されますので、そこまでの動作が想定通りか確認します。

この方法は、コードが長い場合に効果大です。ステップ実行ではコードが長いとデバッグに時間がかかってしまうため、ブレークポイントを指定してデバッグする方法をおすすめします。

Debug.Print

Debug.Printは、イミディエイトウィンドウに値を出力して動作を確認するデバッグ方法です。処理の途中結果を表示させて、どの段階で想定と違う動作をしているか、を確認します。

まずDebug.Printの表示先であるイミディエイトウィンドウは、VBEの「表示」→「イミディエイトウィンドウ」をクリックすることで表示されます。

次にDebug.Printのデバッグ方法は、VBAのコードに記述を追加して行います。

Debug.Print (出力する値)

出力する値は変数やセル指定で行います。値を確認したい場所にDebug.Printの記述を追加して、その値が想定通りか確認します。

VBAを学習するメリット

VBA初心者から中級者、上級者へステップアップするために学習していくと、以下のようなメリットがあります。

  • 自動化による作業時間の短縮
  • 作業ミス削減による生産性の向上
  • キャリアの選択肢拡大
  • 資格取得による自身の価値向上

こういったメリットを理解して、ぜひVBAスキルアップへのモチベーションアップにつなげてください。

自動化による作業時間の短縮

まずは自動化による作業時間の短縮です。これはVBA初心者でも実感できます。
例えば、

1日1時間の手作業→自動化により1日10分=1日50分の短縮

1ヶ月20日作業を行うとすると、1ヶ月で1000分=16.7時間の短縮

となって、大きな作業時間の短縮効果があります。

作業ミス削減による生産性の向上

VBAで自動化できたフローは、同じことを同じように自動で作業していくので、同じ品質を確保でき、その結果生産性の向上につながります

手作業だとどうしてもミスが入り込む可能性が高くなり、そうなった場合のやり直しによる生産性低下は重大な問題となる場合があります。

VBAでの自動化には、手作業から自動化への作業時間の短縮だけでなく、このようなミス削減による生産性の向上という効果もあります。

キャリアの選択肢拡大

VBAのスキルを高めていくと、キャリアの選択肢を拡大することができます。例えば、副業での案件獲得などが可能となり、副収入を得ることができるようになります。

作業効率向上はいつでも、誰にとっても達成しなければならない課題であり、またEXCELはユーザも多いので、VBAのスキル向上によるキャリア選択肢拡大は無駄になることはありません。

資格取得による自身の価値向上

VBAには「VBAエキスパート」という資格も存在し、その資格を取得することで自分の転職市場での価値向上につながります。

自分自身のExcel作業の効率化がひと段落したら、VBAの資格取得にチャレンジしてみてはいかがでしょうか?

データサイエンスを学ぶなら家庭教師Tech Teacher!

まとめ

この記事ではVBA初心者が最初に勉強すべき5つの手順について解説しました。
5つの手順とは、

Step1:効率化したい作業内容を明確にする
Step2:マクロ自動記録で効率化を体験する
Step3:作成されたコードの内容を理解する
Step4:よく使用されるコードを覚える
Step5:少しコードの内容を拡張してみる

のことで、文法をひとつひとつ学習していく方法ではなく、実践しながら慣れていく方法をおすすめしました。

また、想定通りに動作しない場合のデバッグ方法についても解説していますので、この記事を参考に、どんどんVBAに慣れて、VBAのスキルアップの参考にしてください。