トップ > 資格を活かすには > やってみよう!Excel VBAで業務改善! > 次なるイノベーション編: 第16話「これからの課題」3/4 :便利だからと言って…

やってみよう!Excel VBAで業務改善! 次なるイノベーション編|第16話 「これからの課題」

便利だからと言って…

「なんっすかソレ…。
反則みたいなメソッドっスね」
「でしょう~~!?
でも、便利だからと言って、"[A1]"なんてコードは絶対に書いちゃダメよ!
こんなの知ってる人のほうが珍しいんだから…。
仕事のコードは趣味のVBAと違って、"みんなが読んで"、"メンテナンス"していくものでしょ?
こんな可読性の低いコードを使っていたら、その時点で業務アプリ失格よ!」
「わ、わかりました。
…でも、Evaluateメソッドってどんなときに使うんです?」
「そうね……」 岬さんが首をひねりながら、カタカタとイミディエイトウィンドウにコードを追加します。

?DateDiff("YYYY", "2000/5/1", "2018/1/1")
 18 
?Application.Evaluate("DATEDIF(""2000/5/1"",""2018/1/1"",""Y"")")
 17 

「これ2000年5月1日生まれの人が、2018年1月1日に何歳なのか求めるコードなんだけど…。
VBAのDateDiff関数は月日の部分が考慮されないから、間違った年令を返しちゃうでしょ?
ワークシート関数のDATEDIFなら正しい年令を返すんだけど、
残念ながらWorksheetFunctionのメンバーには、DATEDIF関数は無いの。
だからEvaluateを使って、関数式を強引に実行させてるのよ」
「(すげえ…!
こんなマニアックな事まで、先輩は知ってるのか……、
なんてVBAスキルなんだ。
俺も早く、先輩に釣り合うくらいの実力にならなきゃ…)」
森川くんは岬さんの、どうどうとした顔をまぶしそうに見上げました。

一覧にもどる