2019年5月15日にリニューアルした、VBAエキスパートを受験してきました。
その合格の秘訣、勉強法、出題範囲についてまとめてみます。
※新宿にて Pixel 3
VBAエキスパートとは
VBAエキスパートとは、Excel マクロ(VBA) の試験中です。
ベーシックとスタンダードの2つのレベルがあります。
ベーシック→スタンダードの順で、私が今回受けたのはベーシックです。
受けた目的は、どういった問題が出ているか、実践との違いというリサーチ、基礎の確認というものでした。
(どんな問題が出たかは書けませんので、その概要を書きます)
この VBA エキスパートは、2019年5月15日にリニューアルし、出題形式や出題範囲も新しくなっています 。
私は両方受けました(一応合格しました)。
より実践的な内容になっており、以前受けた方にもおすすめです。
ただ、後述するように、執筆時現在、公式の対策テキストは出ておりませんので、それが出てからでも遅くはありません。
旧テキストは、出題範囲が異なりますが、
旧テキストで勉強しても合格はできます。
テキストが出るまでの間、また旧テキストのまま受験する場合は、次のような点に気をつけてみましょう。
・出題範囲で、旧テキストの「デバッグ」の章はリニューアル後は範囲に含まれない。
・代わりに「最終セルを特定する」という項目が追加されました。
Range(“a” & Rows.Count).End(xlUp).Row
Cells(Rows.Count, 1).End(xlUp).Row
といったプログラムをおさえておきましょう。
・Excel2003の部分は必要ないので飛ばしましょう。
・練習問題は、やっておいて損はありません。出題形式は古いのですが。
これからExcelマクロをやる、実際にはそれほど使っていないけど勉強したいという方は、新テキストが出てから勉強→受験したほうが効果は高くなるでしょう。
試験概要
40問で50分。
パソコンで問題を解く形式でその場で合格かどうかがわかります。
合格基準は1000点満点中650点から800点。
試験の難易度によって変わるとのことです。
どの問題が正解していたかどうかは、わかりません
40問を10のセクションに分け、そのセクションごとの正解率というのはわかります。
受講料は12,960円。
MOS( マイクロソフトオフィススペシャリスト)のExcel や WordなどやVBA エキスパートを持っている方は割引制度があり、11,664円です。その場合、
合格証を受験日に見せなければいけません。
申し込み・受験方法
試験は随時申し込み、受験することができ、私が受けているのはオデッセイコミュニケーションズの有楽町店または新宿店です。
昨日は新宿店でした。
日時を決めればネットから申し込み、決済ができ、試験の3日前までなら、1回だけ日時の変更ができます。
おすすめなのは、1か月先なり2週間先の日時で申し込んでみることです。
申し込めばそれに合わせて勉強します。
私は2週間後に日時を設定しました。
リニューアル後の試験をその日に受けたかったという理由もありましたが。
試験当日
当日は、受付開始時間から終了時間までに受付しなければいけません。
オデッセイの場合、試験開始の15分前から5分前までが受付時間となっています。
受付時には、身分証明書が必要で、割引を受ける場合は合格証を忘れず持って行きましょう。
ネットで過去の合格証を見ることができますので、その画面をスマホで見せてば OK です。
受付後、ロッカーに荷物を入れ受験に備えます。
スマホはもちろん時計、ウェアラブルデバイスなども外さなければいけません。
ブースになっているのパソコンでの受験です。
同じ科目または他の科目を受けている方も大体います。
会場のパソコンは、デスクトップで大きいキーボードとコード付きマウスなので使いにくく、私にとってはデメリットですが、しかたありません。
それも含めて試験ですので……
周りのカチャカチャ、カチカチという音も苦手です。
VBAエキスパートの出題形式
従来は、4つの選択肢から1つを選ぶもの、複数選ぶものだけでした。
新しい形式として次のようなものがあります。
ドロップダウン形式
実際のプログラム、コードから適切なものを選びます。
たとえば次のようなイメージです 。
クリック形式
コードの一部分やExcelの画像の一部分をクリックします。
たとえば、こういったものが考えられるでしょう。
「
次のプログラムを実行するとエラーが出ます。
どの行でエラーが出るかを選択してください。」
また、次のようなものも考えられます。。
「
次のマクロを実行したときに、合格列に〇が表示されるのは誰か。」
Excelの画像を選択できるようになっています。
ドラッグアンドドロップ形式
選択肢をドラッグ&ドロップで並び替えます。
穴埋め記述方式
穴埋めで実際にコードを入力します。
「このデータで2行から4行目の人について合格を判定したいという場合、次のコードの空欄にはどういったものを入れればいいか」
正解は
2 To 4
なのですが、試験のときに、Toだと〇、toだと×どうかは、わかりません。
まあ、Toと入れておくべきでしょう。
VBAエキスパートの出題範囲
公式サイトのVBAエキスパートの出題範囲にそってポイントをまとめてみます。
前提
試験全般に言えるとおり、試験に出るもの=実際に使うものではありません。
VBAエキスパートに合格するなら、それを割り切る必要があります。
VBAエキスパートに合格したら、プログラムを書いて仕事を効率化できるかというと決してそうではありません。
しかしながら、そのきっかけにはなります。
何事も、理論と実践を行き来するのが効果的だと思っており、その1つとして、VBAエキスパートを受験してみるのはありです。
ただ、かえって混乱する可能性もあります。
というわけで、VBAエキスパートの出題範囲について書いてみるとともに、実践ではこうしているということをまとめてみました。
1.マクロとVBAの概念
「マクロ」とは、機能のことで、VBAとはVisual Basic for Applicationsの略であり、プログラムの言語の種類を意味します。
日本語、英語、スペイン語のようなものです。
・マクロを書く VBAで書く
・マクロを使う VBAを使う
・マクロを習う VBAを習う
・マクロ入門 VBA入門
・マクロを覚える VBAを覚える
など、同じような意味で使われています。
明確に使い分けるべきなのかもしれませんが、私が使っているのは、「Excelマクロ」という表現です。
VBAのほうがかっこいいかもしれませんが、より敷居を下げたいので、「Excelマクロ」としています。
(Excelだけではなく、Word、パワポにもマクロ・VBAはあります)
そのマクロを使うには、ソフトが必要です。
そのソフトは、Excelとセットになっており、Excelを持っていれば誰でも使えます。
逆にいえば、Excelがないと使えません。
ExcelでAlt+F11(AltキーとF11キーを同時押し)で、VBE(Visual Basic Editor )が開くので試してみましょう。
これがVBEです。
再度、Alt+F11を押すと、Excelに切り替わり、Alt+F11を押すたびに、VBEとExcelを切り替えられます。
VBEとExcelは一体です。
どちらかで保存すれば、VBEもExcelも保存できます。
一体ではあるのですが、主はExcelです。
VBEを閉じてもExcelは開いたままですが、Excelを閉じるとVBEも閉じます。
VBEにマクロを書いたExcelファイルは、〇〇.xlsxではなく、〇〇.xlsm(マクロ有効ファイル)という形式です。
名前を付けて保存では、[マクロ有効ブック]を選んで保存しないと、マクロを保存できません。
そして、そのファイルを開くときには、こういった[コンテンツの有効化]または、
セキュリティに関する警告が出てきます。
これらを有効にしないとマクロが動きません。
ファイルを開くとマクロが実行されるプログラムがあった場合、身に覚えのないファイルを開くと、予期せぬことが起こってしまいます。
(ファイルをすべて削除するとか)
そのため、マクロファイルを開くときには警告を出すのがおすすめです。
Alt→T→O(Alt、T、Oと1つずつ押す)で、Excelのオプションを開き、[リボンのユーザー設定]で、[開発]にチェックを入れ、開発タブを表示します。
その[開発]タブの[マクロのセキュリティ]をクリックし、
[警告を表示してすべてのマクロを無効にする]にチェックが入っているか確認しましょう。
警告を表示しなくする設定もありますが、これで十分かと。
2.マクロ記録
マクロを記録することができます。
自分がやった操作を記録し、それを実行することができるわけです。
私は使いません。
どういうプログラムを書くかを調べるときに使えるといえば使えますが、今やネットで[〇〇(やりたいこと) マクロ」と検索すれば、情報は山ほど出てきます。
マクロの記録には欠点もあるのです。
こちらの記事を参考にしていただければ。
Excelマクロ・GAS・RPA(UiPath)。プログラミングで「記録」をおすすめしない理由と例外 | EX-IT
ここでは、マクロの記録でできないことを抑えておきましょう。
・繰り返し(繰り返し処理する)
・条件分岐(条件によって処理を分ける)
・関数(Excelではなくマクロ側の関数)
・ダイヤログボックスの操作
こういうやつです。
また、個人用マクロブックというものもあり、出題範囲ですが、使いません。
マクロの記録のときに[個人用マクロブック]を選んで記録すると、文字通り自分だけのマクロブックに記録されます。
このマクロは、そのPCのすべてのファイルで使えるのです。
便利なようですが、ファイルの取り扱いに注意が必要なことや警告が多くなることから私は使っていません。
個人用マクロブックは、XLSTARTというフォルダに保存されることはおさえておきましょう。
3.モジュールとプロシージャ
VBEでは、Alt→I→Mで、標準モジュール(モジュールは単位という意味)ができ、コードウィンドウが表示されます。
通常はこの標準モジュール(Module1)にマクロを書いていくのです。
左上はプロジェクトエクスプローラーで、Excelファイルを開けばその分だけ表示されます。
左下は、プロパティウィンドウ。
私はほとんど使いません。
使わないときは、それぞれのウィンドウの×で消すことができ、コードウィンドウだけにしていることも多いです。
こうやってExcelとVBEを並べて書くことも多いので。
再び、プロジェクトエクスプローラーを表示するなら、Ctrl+R、プロパティウィンドウを表示するならF4を押しましょう。
標準モジュールに書くプログラムは、SubとEnd Subが1つの単位であり、これをプロシージャといいます。
Subだと、Sabプロシージャです。
Subのあとのtestはマクロの名前で任意で決めれます。
ただし、
・アルファベット、ひらがな、カタカナ、漢字ではじめる(数字、記号はダメ)
・_(アンダーバー)以外の記号(? !)やスペースが含まれていてはダメ
・プログラムで使うような言葉はダメ(select、openなど)
というルールです。
通常は、このようにsub(すべて小文字)、スペース、マクロ名と打って、Enterキーを押せば、
SubとSが大文字になり、()がつき、End Subが表示されます。
ダメな例だと、赤になり、エラーになるのでわかりやすいです。
プログラミングは、エラーが出たら、さっと修正すればいいので、気にせずガシガシ書いて動かすのをおすすめしています。
しかし、試験では、そうはいきません。
試験に慣れすぎているとエラーを恐れて思い切ったことができなくなる可能性もあります。
やはり両方必要です。
(まあ、これは税理士試験にも言えますが)
なお、同じモジュールに、プロシージャを複数書けます。
この線も自動的にひかれるものです。
別のプロシージャを呼び出すには、プロシージャ名を書けばいいのですが、わかりやすくするためにCalを使うのがおすすめです。
ただ、これも私は使いません。
そんなに複雑なしくみをつくらないからです。
わかりやすいようでわかりにくいですし。
モジュールを複数つくることもでき、モジュール名(Module1、Module2)をダブルクリックすれば切り替えられます。
モジュールを削除するには、モジュール名を右クリックして[Moduleの解放]を選び、
その後の警告で、[いいえ]を選びましょう。
これで削除できます。
モジュール名を変えるのは、プロパティウィンドウを使いましょう。
4.VBAの構文
マクロでは、
Range(“a1”).Value = 100
Worksheets.Add
といった書き方をします。
Range(“a1”).Value = 100
は、セルA1に100を入れる
Worksheets.Add
は、ワークシート(シート)を追加する
という意味です。
プログラミングは、その言語ごとに、伝わる形で表現しなければいけません。
そのルールにそぐわないとエラーがでます。
人間のように、融通はききません。
たとえば、”が抜けているとエラーになります。
これもエラーが出れば直せばいいのですが、試験ではそうはいきません。
基本の構文はおさえておきましょう。
生粋のプログラマーではないのですが~、自分の仕事の効率化をするならそれほど多くを覚える必要はありません。
5.変数と定数
プログラミングの1つの壁は、変数です。
「これは変数です」という前提があれば、うまく伝わります。
「例の件どうなった?」といきなり言っても伝わらないように、いきなり、「iに100を入れて」と言っても伝わりません。
変数名は、自由に決められるのですが、それぞれ考え方があり、このiはよく使われます。
index、integer(整数),iteration(繰り返し)などといった語源です。
これが変数だよと定義するなら、
Dim i
と書きます。
このiのあとに、通常は、どういった種類の変数か(=型)を入れ、
Dim i as Long
だと整数
Dim i as String
だと文字列
です。
変数に数字・文字を入れるなら、
〇 = △
〇に△を入れる
と考えましょう。
i = 1
なら、「iに1を入れる」です。
1 = i
ではありません。
Longにしたあとに、
i = 1
つまり、iに1を入れる
とすると、問題ありませんが、iに イノウエという文字列を入れようとすると、
このようにエラーになります。
asの後を省略すると、
Dim i as Variant
となり、Variantはすべてという意味です。
賛否両論あるでしょうが、私はこのas以降を省略しています。
試験では省略できませんが。
この変数を、こう書くことはできますが、
こう書くと、iとJはVariant(すべて)、kは文字列となります。
省略するとどうなるかを知っておくことが大事です。
変数には範囲があり、通常はそのプロシージャ(上の例だとSubからEnd Sub)でしか使えません。
test2では、iは定義されていますが、test3では、「何それ?」となるわけです。
そこで、この宣言セクションといわれる場所に書けば、すべてのプロシージャでその変数を使えます。
が、私は使っていません。
分かりやすさを考えると、それぞれにDimがあってもいいかなと思いますし、それほど複雑なものはつくらないからです。
なお、一番上のOption Explicitは、変数の宣言を強制すという意味です。
VBEのツール→オプションで、[変数の宣言を強制する]にチェックを入れると出てきます。
こうしておいたほうがミスが減らせるのでおすすめです。
変数を宣言せずに「あれ」とか「こないだの」とかを使っては伝わらないのと同じことが言えます。
変数の初期値(何も設定しないと)は0と覚えておきましょう。
変数の一方で、定数もあります。
定数とは、そのプロシージャ内では固定されるものです。
たとえば、次のように定数aを1.08とし、そのあとで計算に使います。
プログラムを変えるときは、こうすれば、変更が楽です。
使い道はあるのですが、私は使っていません。
6.セルの操作
セルの指定は、RangeまたはCellsを使います。
たとえば、セルB1なら、
Range(”B1″)
または
Cells(1,2)
です。
Range(”B1”)は、Range(”b1”)でもかまいません。
通常はこっちのほうが多いでしょう。
Rangeは直感的にわかりやすいのですが、試験では、Cellsがほとんどです。
Cells(行、列)なので、セルB1は、1行目2列目、Cells(1,2)となります。
Cellsだと、変数を使いやすいメリットがあるのですが、直感でわかりにくい(私だけかもしれませんが)のがデメリットです。
そのため、Rangeを使っています。
Rangeでも変数を使う方法はありますので。
試験問題が読みにくくてしかたありませんでしたが、それも試験です。
セルB1に100を入れる場合は、Rangeだとこう書き
Range(“b1”).Value = 100
Cellsだとこう書きます。
セルB1は、1行2列目なので、
Cells(1,2).Value = 100
今選択しているセルに入れるなら、
ActiveCell.Value = 100
または、
Selection.Value = 100
ですが、
複数範囲を選択していると、
ActiveCell.Value = 100だとこうなり、
Selection.Value = 100だとこうなります。
アクティブになっている
と
選択している
の違いを把握しておきましょう。
また、こういったデータの場合、
Range(“a2”).CurrentRegion.Select
だと、こういう選択になり、
この場合は、
Range(“a2”).CurrentRegion.Select
だと、
こうなります。
仕事では、こういう穴ぼこのデータをつくらないのが大事です。
この状態で、 Range(“b2”).Value = Range(“a2”).Value
なら、
セルB2にセルA2を入れる
という意味なので、
こうなります。
このValueは、Valueプロパティと言われるものです。
Range(“b2”).Value = Range(“a2”).Text
だと、
こうなります。
TEXTプロパティは表示されているまんま入れるものです。
私は使いません。
Excelに書式を設定するほうがわかりやすいからです。
こういうときに、
Range(“d2”).Value = Range(“c2”).Formulaだと、
数式をそのまま入れます。
この状態で、 Range(“a2”).NumberFormat = “#,##0円” なら、
こうなります。
マクロで書式をコントロールできますが、やはりExcelで設定することが多いです。
その他、
Select
Activate
Copy
ClearContents(値、数式をクリア)
Delete(削除)
などをおさえておきましょう。
特殊なものだと、Offsetがあります。
この状態で、Range(“a3”).Offset(1, 0) = Range(“a3”).Valueなら、
こうなります。
Offset(行、列)で、行や列で移動した位置を指定するものです
Range(“a3”).Offset(1, 1) = Range(“a3”).Valueだと、1行下、1列右
Range(“a3”).Offset(-1, 3) = Range(“a3”).Valueだと、1行上、3列右
この指定方法は応用がきくので覚えておいて損はありません。
似たようなものにResizeがあります。
Range(“a3”).Resize(3, 3).Select
3行、3列に範囲を広げます。
複数の範囲を選択するなら、これらのいずれかです。
Range(“a1”, “c1”).Select
Range(“a1:c1”).Select
Range(Cells(1, 1), Cells(1, 3)).Select
行は、Rows、列はColumns
最終行の表現方法は、
Range(“a” & Rows.Count).End(xlUp).Row
または
Cells(Rows.Count, 1).End(xlUp).Row
です。
7.ステートメントント
条件分岐は、IFとEnd Ifではさみます。
二重、三重でもその基本を押さえましょう。
繰り返しは、ForとNextです。
(Next 変数の変数は省略できます)
たとえば、2行目で、国語が50点より上だったら、合格に「〇」を入れるとするなら、
こう書きます。
IFとEnd Ifの間にその処理を書くわけです。
もし50以下だったら、何もしません。
50以下の場合に処理を入れるなら、Elseを使います。
さらに分岐するなら、Elseifも使います。
最後にElseを入れることをおさえておきましょう。
IFを重ねて、国語で50点超、英語で50点超とするなら、
または、Andを使って、こう書いたほうがすっきりします。
If Range(“b2”).Value > 50 And > 50 Then
ではなく、
If Range(“b2”).Value > 50 And Range(“c2”).Value > 50 Then
と書くようにしましょう。
繰り返したいときは変数iを使い、判定するセルB2、C2、d2の2の部分をiにし、2、3、4と繰り返します。
セルB2、B3、B4 そして、 C2、C3、C4、さらにD2、D3、D4と繰り返すわけです。
より実践的に書くなら、2から4ではなく、2から最下行まで繰り返すとします。
こうすれば、データが増えてもプログラムは間違いなく動くわけです。
人が行数を数えなくて済みます。
Withは、私はそれほど使いません。
たとえば、こういったものを
Sub bbb()
Range(“a1”).Value = “Excel”
Range(“a1”).Font.Bold = True
Range(“a1”).Font.Size = 15
End Sub
こう書くことができます。
見やすいようなそうでもないような・・・・
Sub bbb()
With Range(“a1”)
.Value = “Excel”
.Font.Bold = True
.Font.Size = 15
End With
End Sub
8.関数
関数はExcelに似ているものなら、
Now 現在の日時
Year 年
Month 月
Day 日
Len 文字列の文字数
Left 左から抽出
Mid 真ん中から抽出
Right 右から抽出
Replace 置換
Trim 空白を除去
int 切り捨て
などがあります。
ただし、Midは、Mid(文字列、10)で、「10文字目から後ろをすべて表示」という処理をし、Excelとは異なります。
(Excelは10文字目から何文字と指定)
そうでないものなら、
DateSerial(年、月、日)で、日付データ→ExcelのDate
Instr(文字列、検索文字) 文字列が含まれているかを確認
Strconv(〇〇) 大文字、小文字、全角、半角などに変換
Dir(ファイル名) ファイルがあるかどうか
Val(文字列) 文字列を数値に→ExcelのValue
メッセージボックス(Msgbox)についてはこちらの記事を参考にしていただければ。
Excelマクロで、メッセージボックス(はい、いいえ、OK、キャンセル)を使わない理由 | EX-IT
9.ブックとシートの操作
ブックは、Workbooks
シートは、Worksheets
です。
それぞれ、Copy、Select、Activate、Deleteなどができます。
■上書き保存
ThisWorkbook.save
■名前をつけて保存
ThisWorkbook.SaveAs Filename:=”sample.xlsm”
■新しいブックを追加
Workbooks.Add
■ブックを閉じる(保存して)
ActiveWorkbook.Close SaveChange := True
■ブックを閉じる(保存しないで)
ActiveWorkbook.Close SaveChange := False
■シート追加
Worksheets.Add
■シートを新しいブックにコピー
Worksheets.Copy
■シート(sheet1)を削除(警告が出るので次の3行セットで)
Application.DisplayAlerts = False
Worksheets(“sheet1”).delete
Application.DisplayAlerts = True
■シートの名前変更
Worksheets(”Sheet1”).name=”Sheet2“
■シートのコピー(一番右に)
Worksheets(“Sheet1”).Copy after:=Worksheets(Worksheets.Count)
10.マクロの実行
マクロの実行はこちらの記事を参考にしていただければ。
Excelマクロを実行する4つの方法。ショートカットキー・ボタン | EX-IT
Excelマクロ・GAS・RPA(UiPath)実行のショートカットキー | EX-IT
クイックアクセスツールバーに登録する方法もありますが、ショートカットキー使えばいらないかなと、使っていません。
受験してみて改めてわかるのは、やっていないこと多いなぁ…と。
ファイルのつくり方、シートのつくり方や仕事の流れの整備、Excel自体の機能もうまく組み合わせるのはやはり大事です。
ただ、基本的なことを体系的に身につけるのは、試験勉強が1つの方法ですので、一度は受験してみてはいかがでしょうか。
(新テキストが出てから)
■編集後記
昨日は、昼前にVBAエキスパートを受験し、その後アベンジャーズ エンドゲームストア&カフェへ。
カフェは、通常のカフェがアベンジャーズ仕様に。
1/6のフィギュアが店内に勢ぞろいでした。
欲しいけど、1つ3万から5万円……。しかもなかなか手に入りません。
そのカフェもストアも以前家族でフラッと入ったところでした。
そのときはアベンジャーズ、マーベルに興味がなかったのに(カフェは通常仕様でしたが)、恐ろしいものです。
仕事の後は、トライアスロンショップに寄って、メンテ後のトライアスロンバイクを受け取り、乗って帰りました。
金曜日には沖縄に向けて発送します。
■昨日の「1日1新」
アベンジャーズカフェ
リニューアル後のVBAエキスパート ベーシック
■昨日の娘日記
最近はサンドイッチが好きで、朝も夜も食べています。
たまごのサンドイッチ、イチゴジャムのサンドイッチを交互に欲しがります。
■著書
『税理士のためのプログラミング -ChatGPTで知識ゼロから始める本-』
『すべてをがんばりすぎなくてもいい!顧問先の満足度を高める税理士業務の見極め方』
ひとり税理士のギモンに答える128問128答
【インボイス対応版】ひとり社長の経理の基本
「繁忙期」でもやりたいことを諦めない! 税理士のための業務効率化マニュアル
ひとり税理士の自宅仕事術
リモート経理完全マニュアル――小さな会社にお金を残す87のノウハウ
ひとり税理士のセーフティネットとリスクマネジメント
税理士のためのRPA入門~一歩踏み出せば変えられる!業務効率化の方法~
やってはいけないExcel――「やってはいけない」がわかると「Excelの正解」がわかる
AI時代のひとり税理士
新版 そのまま使える 経理&会計のためのExcel入門
フリーランスとひとり社長のための 経理をエクセルでトコトン楽にする本
新版 ひとり社長の経理の基本
『ひとり税理士の仕事術』
『フリーランスのための一生仕事に困らない本』
【監修】十人十色の「ひとり税理士」という生き方