見出し画像

VBAは変数の型宣言文を省略できるように設計されてると思うんだけど?

変数の型宣言をしてないのを間違いのように指摘する人がいるけど、違うと思う

 SNSでプログラミング上級者(たぶん)と思える人がたまに「変数の型宣言をしていない」と人さまのプログラムに難癖つけてるのをみかけるんだけど、VBAはそれをしなくても良いように設計されていると思います。たまにJavaScriptを使いますが、letとかvarとか、あー煩わしいと思ってしまいます。

宣言しない=Variant型宣言

 宣言しなくても自動的にバリアント型が割り当たるしくみなっているから「型宣言をしていない」という言い方も正しくないでしょう。逆に型宣言をしたらどんなメリットがあるんでしょう。
 入力ミスやコーディングのミスを防ぐことができることでしょうか?VBAでアプリを作る人がいたらそうかもしれませんが、自動化だけで混乱するほど長いコードは書かないと思います。
 メモリを節約して処理速度が上がるという話もありますが、CPUが286でメモリ2MBなんていう時代ならそうだったかもしれません。「昭和かよ!」ですよね。平成だったかな?

宣言文を省略できないのはサブプログラム間で変数を共通化するときだけ

 15年くらい野良VBAを書いてますが、宣言を省略できないのはサブプログラム間で受け渡す変数を共通化するときだけでした。VBAは他の高級言語に比べて人間の会話に近くなっていると感じます。長い年月使われ続け、不具合を洗い出し、使い勝手を研究し、改良を重ね洗練されていると感じます。
variant 限った話ですが、
DIm hensu1 as variant,hensu2 as variant,hensu3 as variant のような書き方で数が多くなると結構面倒くさいですよね。ところが
Dim hensu1, hensu2,hensu3
だけで済むんですよ。知ってました?MicroSoftは偉い。

MicroSoftはプログラム言語をほとんど知識がなくても使えるようにしてくれた

 このことは大変ありがたく、マイクロソフトさまさまです。既成のビジネスソフトがそのままバリバリ活躍することは少ないですよね。私は20万円近い価格のソフトに振り回されたことがあります。詳しくは書きませんが、悩んだ挙句、VBAの入門書を読みながら職場で使っているEXCELの作業を自動化したら、すぐに解決して自分が助かっただけでなく、同じ作業に携わる同僚たちに大変喜ばれた経験があります。

VBAが業務の流れを阻害するというのがわからない

 パナソニック社内でVBAを禁止したら、作業効率が上がったというニュースがありましたが、どんな作業なんでしょうね。禁止して効率があがったなら、もともとワークシートだけでできる作業をVBAでやっていたということでしょうか?それならわかります。過ぎたるは猶及ばざるが如しですよね。
 職場でシェアするときは必要最低限のコードを使って説明に困らないような書き方をするのがいいと思います。手前味噌ですが下の動画を見ていただけると嬉しいです。