はじめに
IT業界に入って十数年。
一番頻繁に触っているものはExcel VBA。
始まりは新人の時に振られた、大量にある納品ドキュメントの1シート目のA1セル、すべてのシート倍率100%という
クソみたいな仕事が始まりだった。
こんな人間がやるべき仕事じゃないものはプログラミングがやってしかるべき、だってウチSEやもん
というところからはじまり、面倒ごとはExcel VBAに任せてきた。
RPA(Blue Prism)と出会い、自動化の幅は広がったけれどユーザーの知名度を考えるとExcel VBAだろう。
長いことやってきたので、ここいらでいっちょ資格でも取ってみますかというのがはじまり。
まあ、根底には収集癖が転じて資格マニアになってしまったというのもあるけどさ。
VBAエキスパート ExcelVBA スタンダードってどういう試験なのよ
この試験はVBAエキスパート試験の中のExcelVBAについての試験です。
ベーシックとスタンダードがあり、スタンダードの方がより広範囲な知識を問われます。
試験はCBTで行われますが、選択式以外に入力させるような問題も出ます
そしてこの試験2019/05/15に改定が行われています。
旧試験で出題範囲だった以下が削除されましたので、テキストは最新のものを使いましょう。
- イベント
- UserForm
- メニューの操作
- Windowsの機能を利用する
- レジストリの操作
- 変数と配列(静的変数、ユーザー定義型)
- ファイルの操作(テキストファイルの操作)
レジストリ操作とか、ユーザー定義型変数とかなかなかいかつい範囲だったんですね笑
新試験範囲はこちらをご参照ください。
大きくは検索とオートフィルターやテーブル操作が追加されています。
VBAエキスパート ExcelVBA スタンダードの勉強方法
まずは公式テキストでしょう。
公式テキストを買うメリットとしては、演習用データ、模擬試験サイト(アオテンスキルチェックサイト)の情報もついてくること。
さらに、試験はこのテキストから出題されることです。
合格体験記を調べても――
- サンプル問題まんま出てきた
- サンプル問題の正当以外の選択肢に助けられた
- 模擬試験サイトの問題をマスターすれば受かる
- ワークシート関数を含め引数の暗記も大事
などなど、この試験のバイブルであることがわかります。
公式テキストが公式テキストたらんG検定とはえらい違いです。
▼テキストの資料DL用URL(要テキストのID/PW)
https://vbae.odyssey-com.co.jp/book/ex_standard
VBAエキスパート ExcelVBA スタンダードの勉強ノート
プロシージャ
マクロを業務で使っている人ならこの辺りはノーマークでも行けるかもしれません。
ただし、入力が必要なので、スペルは正確に覚えておいた方がいいですね。
参照渡しと値渡しは押さえておいた方がいいと思います。
宣言しない場合には、暗黙的にByRef(参照渡し)になり、呼び出し元の引数も更新されます。
ByVal(値渡し)した場合、引数は変更されず、引数の値のみ渡されます。
変数
インデックスが0ではじまるのはお約束。
Split関数は便利な関数で、変数を区切文字で配列にできます
例えば以下のようなCSVを配列にできます。
'変数はVariantで宣言 Dib list As Variant list = Split("oen,two,three",",") 'one MsgBox list[0]
ステートメント
Exitステートメント
ForやSubを特定条件の場合は抜け出す、Exitは押さえておきたいところ。
Select Caseステートメント
Select Case Val '1 or 3 or 5 Case 1,3,5 '何かしら処理 '10 から 50 Case 10 To 50 '何かしら処理 '50より大きい Case Is >50 '何かしら処理 'それ以外の条件 Case Else '何かしら処理 End Select
ファイルの操作
フォルダ操作
'ディレクトリ作成便利だよね MkDir "c:\make\dir"
ワークシート関数
ワークシート関数あまり使っていませんでしたが意外と使えるものが多い。
SUM関数
WorksheetFunction.Sum(Range("A1:A5"))
COUNTIF関数
WorksheetFunction.Countif(Range("A1:A5"),"条件")
SUMIF関数
WorksheetFunction.Sumif(Range("A1:A5"),"条件",Range("B1:B5"))
EOMONTH関数
EOMONTH(開始月,月)
セル検索とオートフィルター操作
セルの検索、ループで処理するケースが多かったけど、ほんと便利そう。
もっと早く知りたかったよ←
LookAt
完全一致 xlWhole
部分一致 xlPart
オートフィルタ―メソッドの論理演算
論理和 xlOr
論理積 xlAnd
データの並べ変え
様々なプロパティが増えて難しくなっています。
このセクションはテキストを全般的に理解しておいた方がよさそうです。
合格体験記によると、プロパティを選択式ではなく入力させる問題がでるそうな。
テーブルの操作
これはもっと早く知りたかった笑
普通にVBA組むのに重宝できます。
タイトルを含むテーブルをListObject.Rangeで取得できるとか、
見出しを含まないテーブルはListObject.DataBodyRangeで取得するとか。
構造化参照も超便利ですね。
Range("テーブル1[#All]")でとれるとか。
エラー対策
エラーハンドリングで重要なのはOn Error GoToとOn Error Resume Next
'エラー時にlabelへGo On Error GoTo label label:
'エラーがあっても無視 On Error Resume Next
デバック
デバックで重要なのはイミディエイトウィンドウの使い方でしょう。
イミディエイトウィンドウ内でDimはできないとか、Debug.Printでイミディエイトウインドに出力とか。
結果はどうかな
受験したら追記します。
正直、選択式なら余裕だろうけど、入力って一抹の不安があるなぁ。
なにせ、ちょっと忘れるとすぐググって、ああそうそうこれこれとコードを書くことが多いもので……