新VBAエキスパートBasic 合格の秘訣・勉強法・出題範囲

2019年5月15日にリニューアルした、VBAエキスパートを受験してきました。
その合格の秘訣、勉強法、出題範囲についてまとめてみます。

IMG_20190515_112705

※新宿にて 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です。
image

再度、Alt+F11を押すと、Excelに切り替わり、Alt+F11を押すたびに、VBEとExcelを切り替えられます。
VBEとExcelは一体です。
どちらかで保存すれば、VBEもExcelも保存できます。
一体ではあるのですが、主はExcelです。
VBEを閉じてもExcelは開いたままですが、Excelを閉じるとVBEも閉じます。

VBEにマクロを書いたExcelファイルは、〇〇.xlsxではなく、〇〇.xlsm(マクロ有効ファイル)という形式です。
名前を付けて保存では、[マクロ有効ブック]を選んで保存しないと、マクロを保存できません。

image

     

    そして、そのファイルを開くときには、こういった[コンテンツの有効化]または、
    image

    セキュリティに関する警告が出てきます。

    image

     

    これらを有効にしないとマクロが動きません。
    ファイルを開くとマクロが実行されるプログラムがあった場合、身に覚えのないファイルを開くと、予期せぬことが起こってしまいます。
    (ファイルをすべて削除するとか)

    そのため、マクロファイルを開くときには警告を出すのがおすすめです。
    Alt→T→O(Alt、T、Oと1つずつ押す)で、Excelのオプションを開き、[リボンのユーザー設定]で、[開発]にチェックを入れ、開発タブを表示します。

    image

     

    その[開発]タブの[マクロのセキュリティ]をクリックし、

    image

    [警告を表示してすべてのマクロを無効にする]にチェックが入っているか確認しましょう。

    image

    警告を表示しなくする設定もありますが、これで十分かと。

    2.マクロ記録

    マクロを記録することができます。
    自分がやった操作を記録し、それを実行することができるわけです。
    私は使いません。
    どういうプログラムを書くかを調べるときに使えるといえば使えますが、今やネットで[〇〇(やりたいこと) マクロ」と検索すれば、情報は山ほど出てきます。

    マクロの記録には欠点もあるのです。

    こちらの記事を参考にしていただければ。

    Excelマクロ・GAS・RPA(UiPath)。プログラミングで「記録」をおすすめしない理由と例外 | EX-IT

     

    ここでは、マクロの記録でできないことを抑えておきましょう。

    ・繰り返し(繰り返し処理する)
    ・条件分岐(条件によって処理を分ける)
    ・関数(Excelではなくマクロ側の関数)
    ・ダイヤログボックスの操作

    こういうやつです。
    image

     

    また、個人用マクロブックというものもあり、出題範囲ですが、使いません。
    マクロの記録のときに[個人用マクロブック]を選んで記録すると、文字通り自分だけのマクロブックに記録されます。
    このマクロは、そのPCのすべてのファイルで使えるのです。
    便利なようですが、ファイルの取り扱いに注意が必要なことや警告が多くなることから私は使っていません。

    image

    個人用マクロブックは、XLSTARTというフォルダに保存されることはおさえておきましょう。

     

     

    3.モジュールとプロシージャ

     

    VBEでは、Alt→I→Mで、標準モジュール(モジュールは単位という意味)ができ、コードウィンドウが表示されます。

    通常はこの標準モジュール(Module1)にマクロを書いていくのです。

    左上はプロジェクトエクスプローラーで、Excelファイルを開けばその分だけ表示されます。
    左下は、プロパティウィンドウ。
    私はほとんど使いません。
    image

     

    使わないときは、それぞれのウィンドウの×で消すことができ、コードウィンドウだけにしていることも多いです。
    こうやってExcelとVBEを並べて書くことも多いので。
    image

     

    再び、プロジェクトエクスプローラーを表示するなら、Ctrl+R、プロパティウィンドウを表示するならF4を押しましょう。

    標準モジュールに書くプログラムは、SubとEnd Subが1つの単位であり、これをプロシージャといいます。
    Subだと、Sabプロシージャです。

    image

    Subのあとのtestはマクロの名前で任意で決めれます。
    ただし、
    ・アルファベット、ひらがな、カタカナ、漢字ではじめる(数字、記号はダメ)
    ・_(アンダーバー)以外の記号(? !)やスペースが含まれていてはダメ
    ・プログラムで使うような言葉はダメ(select、openなど)
    というルールです。

    通常は、このようにsub(すべて小文字)、スペース、マクロ名と打って、Enterキーを押せば、

    image

    SubとSが大文字になり、()がつき、End Subが表示されます。

    image

    ダメな例だと、赤になり、エラーになるのでわかりやすいです。

    image

     

    プログラミングは、エラーが出たら、さっと修正すればいいので、気にせずガシガシ書いて動かすのをおすすめしています。

    しかし、試験では、そうはいきません。
    試験に慣れすぎているとエラーを恐れて思い切ったことができなくなる可能性もあります。
    やはり両方必要です。

    (まあ、これは税理士試験にも言えますが)

     

    なお、同じモジュールに、プロシージャを複数書けます。
    image

     

    この線も自動的にひかれるものです。

    別のプロシージャを呼び出すには、プロシージャ名を書けばいいのですが、わかりやすくするためにCalを使うのがおすすめです。
    image

    ただ、これも私は使いません。
    そんなに複雑なしくみをつくらないからです。
    わかりやすいようでわかりにくいですし。

    モジュールを複数つくることもでき、モジュール名(Module1、Module2)をダブルクリックすれば切り替えられます。

    image

    モジュールを削除するには、モジュール名を右クリックして[Moduleの解放]を選び、

    image

     

    その後の警告で、[いいえ]を選びましょう。
    これで削除できます。

    モジュール名を変えるのは、プロパティウィンドウを使いましょう。
    image

     

     

    4.VBAの構文

    マクロでは、
    Range(“a1”).Value = 100
    Worksheets.Add

    といった書き方をします。

    Range(“a1”).Value = 100

    は、セルA1に100を入れる

    Worksheets.Add

    は、ワークシート(シート)を追加する
    という意味です。

    プログラミングは、その言語ごとに、伝わる形で表現しなければいけません。
    そのルールにそぐわないとエラーがでます。
    人間のように、融通はききません。

    たとえば、”が抜けているとエラーになります。
    image

    これもエラーが出れば直せばいいのですが、試験ではそうはいきません。

    基本の構文はおさえておきましょう。
    生粋のプログラマーではないのですが~、自分の仕事の効率化をするならそれほど多くを覚える必要はありません。

    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に イノウエという文字列を入れようとすると、

    このようにエラーになります。
    image

     

    asの後を省略すると、
    Dim i as Variant
    となり、Variantはすべてという意味です。

    賛否両論あるでしょうが、私はこのas以降を省略しています。
    試験では省略できませんが。

    この変数を、こう書くことはできますが、

    image

    こう書くと、iとJはVariant(すべて)、kは文字列となります。

    image

     

    省略するとどうなるかを知っておくことが大事です。

    変数には範囲があり、通常はそのプロシージャ(上の例だとSubからEnd Sub)でしか使えません。

     

    test2では、iは定義されていますが、test3では、「何それ?」となるわけです。
    image

    そこで、この宣言セクションといわれる場所に書けば、すべてのプロシージャでその変数を使えます。
    が、私は使っていません。
    分かりやすさを考えると、それぞれにDimがあってもいいかなと思いますし、それほど複雑なものはつくらないからです。

    image

    なお、一番上のOption Explicitは、変数の宣言を強制すという意味です。
    VBEのツール→オプションで、[変数の宣言を強制する]にチェックを入れると出てきます。
    こうしておいたほうがミスが減らせるのでおすすめです。
    変数を宣言せずに「あれ」とか「こないだの」とかを使っては伝わらないのと同じことが言えます。
    image

     

    変数の初期値(何も設定しないと)は0と覚えておきましょう。

     

    変数の一方で、定数もあります。

    定数とは、そのプロシージャ内では固定されるものです。

    たとえば、次のように定数aを1.08とし、そのあとで計算に使います。

    image

     

    プログラムを変えるときは、こうすれば、変更が楽です。

    image

    使い道はあるのですが、私は使っていません。

     

    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だとこうなり、
    image
    Selection.Value = 100だとこうなります。

    image

     

    アクティブになっている

    選択している

    の違いを把握しておきましょう。

    また、こういったデータの場合、

    image

     

    Range(“a2”).CurrentRegion.Select

    だと、こういう選択になり、

    image

    この場合は、

    Range(“a2”).CurrentRegion.Select

    だと、
    image

     

    こうなります。
    image

     

    仕事では、こういう穴ぼこのデータをつくらないのが大事です。

     

    この状態で、    Range(“b2”).Value = Range(“a2”).Value

    なら、
    セルB2にセルA2を入れる

    という意味なので、

    image

    こうなります。
    このValueは、Valueプロパティと言われるものです。

    image

     

    Range(“b2”).Value = Range(“a2”).Text

    だと、

    image

     

    こうなります。

    image

     

    TEXTプロパティは表示されているまんま入れるものです。
    私は使いません。
    Excelに書式を設定するほうがわかりやすいからです。

     

    こういうときに、
    Range(“d2”).Value = Range(“c2”).Formulaだと、
    image

    数式をそのまま入れます。
    image

     

    この状態で、    Range(“a2”).NumberFormat = “#,##0円”   なら、

    image

    こうなります。

    image

     

    マクロで書式をコントロールできますが、やはりExcelで設定することが多いです。

    その他、
    Select
    Activate
    Copy
    ClearContents(値、数式をクリア)
    Delete(削除)
    などをおさえておきましょう。

     

    特殊なものだと、Offsetがあります。
    この状態で、Range(“a3”).Offset(1, 0) = Range(“a3”).Valueなら、
    image

    こうなります。
    Offset(行、列)で、行や列で移動した位置を指定するものです

    image

    Range(“a3”).Offset(1, 1) = Range(“a3”).Valueだと、1行下、1列右
    image

     

    Range(“a3”).Offset(-1, 3) = Range(“a3”).Valueだと、1行上、3列右

    image

     

    この指定方法は応用がきくので覚えておいて損はありません。

    似たようなものにResizeがあります。

    Range(“a3”).Resize(3, 3).Select

    image

     

    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点より上だったら、合格に「〇」を入れるとするなら、

    image

     

    こう書きます。
    IFとEnd Ifの間にその処理を書くわけです。

    もし50以下だったら、何もしません。

    image

     

    50以下の場合に処理を入れるなら、Elseを使います。
    image

     

    さらに分岐するなら、Elseifも使います。
    最後にElseを入れることをおさえておきましょう。
    image

     

    IFを重ねて、国語で50点超、英語で50点超とするなら、

    image

     

    または、Andを使って、こう書いたほうがすっきりします。
    image

     

    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から最下行まで繰り返すとします。
    こうすれば、データが増えてもプログラムは間違いなく動くわけです。
    人が行数を数えなくて済みます。
    image

     

     

     

    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エキスパート ベーシック

    ■昨日の娘日記
    最近はサンドイッチが好きで、朝も夜も食べています。
    たまごのサンドイッチ、イチゴジャムのサンドイッチを交互に欲しがります。