VBA

ちょっと前に仕事でVBAをやる羽目になった。
いままでVBAをやる機会がなかったので他人のソースを見たり、WEBで適当に調べてやっていた。
納期もわりと厳しめだし要求されるレベルは高かった・・・


そんなグチはともかくVBA(VB?)には以下のような構文がある。

001 Sub Hoge()
002 On Error Goto Err_Hoge
003 
004     ' 大事なお仕事
005 
006 Err_Hoge:
007 
008     ' 大事なエラー処理
009 End
010 

んで、ふむふむこいつはtry〜catchみたいなやつだと勝手に解釈してコーディングを進めていた。
数日後に自称「数年前まではExcel VBAで日本で5本の指に入っていた」先輩と話す機会があり聞いてみたところ
On Error Gotoは自分の思う仕様と全然違うものだと知って愕然とした。

001 Sub Hoge()
002 On Error Goto Err_Hoge
003 
004     ' 大事なお仕事
005   Call Hige()
006 
007 Err_Hoge:
008 
009     ' 大事なエラー処理
010 End
011 
012 Sub Hige()
013 
014     ' 割と大事な仕事★
015 
016 End

私は、Sub Hige()中で起こったエラーは呼び出しもとのHoge()でキャッチされて、Err_Hogeで捕まえられると思っていたのだ。。。orz
早めに気づいてよかった。(´ヘ`;)。id:Yamamiさんに怒られそうだなぁ。


こういう自分の勝手な思い込みで痛い目にあわないようにやっぱり基礎はきちんと勉強しないとと反省した。