17年振りにExcelの資格試験を受けて約3週間。
その上のクラスである「Excel VBA エキスパート スタンダード」を受験しました。
ベーシックに比べると記述問題も多く、試験範囲も広いので実務経験あっても関係なくちょっと不安でしたがなんとか合格できました。(867点・・・)
試験範囲と正解率
- プロシージャ:100%
- イベント:67%
- ステートメント:100%
- 関数:88%
- エラーへの対処:100%
- APIとOLEオートメーション:100%
- 変数と定数:83%
- レジストリの操作:100%
- ファイルの操作:83%
- ユーザーフォームとメニューの操作:67%
悩んだ問題・たぶん間違えた問題
回答中に「後で確認する」にした問題は6つありました。
867点という事は、それ以外の自信があった問題でも間違えがあったという事。
<イベント>
「存在しないイベント」という問題で、「Close」が存在しないのは知っていたけど、Closeが四択に無い!(><)
「色を変更する前」と「ハイパーリンクに関する事」の二択で悩んで、ハイパーリンクにしたかな。(忘れた、、、)
「Worksheet_FollowHyperlink」存在していました・・・。存在しないのは色関係だったか?
<静的変数Staticの動作>
普段使ったことの無い静的変数「Static」の動きが分からない!確か、プロシージャが終了しても格納した変数を保持する!だったような・・・。という事は単純にForで5回繰り返しの足し算を間違えたかも。
「Static」という名前を覚えるだけで安心してしまった。
<月末の日付を取得する関数>
「EoMonth」だと思い込んでしまったが、これはWorkSheetで使う関数だったかな?もしかして「DateSerial」で良かったのか?そういえば引数が1つだった。もっと問題をじっしく確認すれば良かったのかも。(><)
例:DateSerial(2017, 4, 0) だと 「2017/3/31」となる。
覚えにくかった事の覚え方例・諦め方
<右クリックで表示される「コンテキストメニュー」>
「右クリックで表示されるメニューにマクロを登録する」だけ覚え、細かいこと(区切り線とか削除とか)は諦めた(捨てた)※赤文字の部分を覚えた
Dim newCmd as Object
Set newCmd = CommandBars("Cell").Controls.Add(Type:=msoControlsButton)
newCmd.Caption = "マクロ実行"
newCmd.OnAction = "sampleMacro"
<OLEオートメーション> IE起動に使うやつ。こういう名前だったのね。
Object Linking Enbedding:別のアプリケーション操作など、オブジェクトをやり取りする規格。
覚えたことは使い方が2つあるという事だけ。
①参照設定
②CreateObject
<WSH>
Windows Script Host:テキスト形式で作成したスクリプト(プログラム)をWindows上で実行する仕組み。OLEオートメーションを使ってWSHを利用する。
覚えたことは「CreateObject」という事だけ。
きっと問題に出たら記述で「CreateObject」を入力させる内容だと思ったから。
<API>
Application Programming Interfaxce:Windowsが持っている機能。その機能は外部に公開されていて、機能や関数を呼び出すだけで実行される。
覚えたことは「Declare」という事と、それを宣言セクションで行うという事だけ。
Declare Function ***
でも、これが覚えられない!!
で、ちょっとヘンなゴロ(物語り)にして覚えました。
API → APPI(安比)
「Kernel32」がAPIだという事で、「安比スキー場」と「カーネルサンダースおじさん」を合体!
カーネルサンダースおじさんが安比のスキー場で「で?(何か)くれー!」と何かを要求している場面を想像。
これでなんとか覚えられ、そして問題にも出ました!「Declare」完璧!
<静的変数「Static」>
全然覚えられない!今後も使う事は無いと思うし・・・。
で、「Static」の単語の意味を 調べると、「静的な・面白みのない」との事。
「面白みのない・お堅い the スター!」でイメージされる芸能人を思い浮かべました。
<レジストリの操作>
SaveSetting, GetSetting, GetAllSetting, DeleteSetting の単語だけを覚えました。
<テキストファイルの操作>
これは実際にTOOL開発でよく使うけど、脳内メモが怪しかったので詰め込みました。
- EOF(1) 一行ずつ最後まで読み込む時
- 「Open フルパス For 〇〇〇 As #1」 が基本
- 〇〇〇 は「Input:読み込み」「Output:出力」「Append:追記」「Binary:一気に読み込み」
- Input ・・・Line Input、Output・・・Print、Append・・・Print、Binary・・・Get
<配列の保護>
ReDimした時に、「ReDim Preserve 配列名(n)」としないと、それまで格納していた値が初期化されてしまう。
これもよく使うけど「何だっけ?」と自分メモで確認しちゃいます。
今回は記述させる形ではなく、配列の動きとして問題に出ました。Preserveが無かったので初期化され答えは「空白」でした。
教材
- 公式テキスト
- 公式テキストに挟んであった模擬問題プログラムと演習問題のpdf(URLとPWはテキストに掲載)