エクセルマクロ備忘録

マクロ学習備忘録

""とか()とか 〜VBAとしての意味の有無〜

RangeとCellsについて書いてきましたが、多分こう思う人達がいるのではないでしょうか。

 

()の中を""で囲ったり囲わなかったり、もうわけわからんちん

 

私も最初ピンとこなかったんですが、意外とここは重要な点だなぁと思うので、書いておきます。

 

【""の説明】

""は、端的にいうと、VBA上の意味を持たないものを使いたいときに用いる記号です。

Rangeの番地としてのA2を例にとって見ましょう。

 

A2という文字列自体には、VBA上の意味は付与されていません。なので、A2とだけある場合にはマクロを実行してもエラーになります。

このエラーは、以前の例えでいうと、

エクセルくんが、「僕このA2っての知らないよ」と言ってる。

ということを意味します。

入力した文字列の"VBA日記"にしてもそうです。その文言自体はVBA上で意味を持たないのです。したがって、そのままだとエクセル君が理解することができません。なので、エクセル君に「理解はできないだろうけどこういうものがあるんだ」と教えるための記号だと思えばいいと思います。

 

人間の感覚で言えば、

「ふんみゅれ」という文字を紙に書いてください

といわれるような感じですかね。

日本語として「ふんみゅれ」なんて言葉はおそらくありませんが、それを書けといわれれば、まあ書けますよね。余談ですが、エクセル君のすごいところは、それが英語だろうが数字だろうがなんだろうがすさまじい速度で正確に実行してくれるところです。

 

 

【()の説明】

()は、オブジェクトにくっつく場合はそのオブジェクトの名前や位置など、

そのオブジェクトを特定するための情報

を示します。

 

Rangeは、Rangeの回で書いた通り、範囲を示すオブジェクトです。

当然そのままだと、どこやねんというツッコミ受けること必定です。ですので、()内にその場所を特定する内容を入れるわけです。

ここでポイントになるのが、()内にセルの名前を使いたい場合は、””を使うという点です。前述の通り名前(セル番地)というのはVBA上意味を持たないものですから、””で囲ってやるわけです。

そして、Cellsの回の最後に書いたRange(Cells(○,○) , Cells(△,△))という指定の仕方は、()内に含まれるものがすべてVBA上の意味を持っています。なので、ここには””がないわけです

 

こんな感じでしょうか。ぶっちゃけこの辺の表現に関わる結論は

こーいうもんだと思え

これに尽きます。

 

ただまあ、文系人間がVBAに触れるにあたって、考え方の参考になれば幸いです。