エクセルマクロの変数なんて怖くない

「変数」と聞いただけで拒否反応が出る

変数の宣言?もう読む気がしない・・・
変数のカタ?カタチ?なんかカタチが変わるの?

プログラミングにおいて必須の要素である「変数」。

学校などでならったわけではなく、マクロの自動記録から始めた方やプログラミングをこれから覚えようという方には少しとっつきにくく、拒否反応が出る言葉ではないでしょうか。

「変数の宣言」という言葉に拒否反応が出ていた私。。。
 
 
 
その私でもどうにか克服できたのでこの記事を一読してみてください。
(この章を読み終える頃には多少の抵抗がなくなっていることを願って・・・)
 
 

「変数」とは何か?

まず、変数とは、、、、、数学でいうところの「x」のようなものと考えてください
(数値だけでなく文字列なども入れられるので専門の人から怒られちゃうかもしれませんが汗、ここではいったんそう認識してください。これを乗り越えていろいろマクロを作っていくうちにわかっていくようになります)
 
 
 
数学の「x」にはいろいろな数値が入りますね。「x = 1」「x = 120」など。
それと同じように変数にはいろいろな数値が入ります。

変数の例
sub 変数の例()
  dim x
  x = 1
  msgbox x
end sub

上記の例は、
変数「x」に”1″という数値を入れ込んで、( x = 1)
それをメッセージボックで表示する(msgbox x)
というものになります。
変数に数値を入れるには = を使って入れ込みます。
 
 

■変数として使用できるワード■

変数として使用できるワードはマクロで使用されている文言(Copy,pasteなど)以外であれば使用OKです。

ループ文のページで使っていた「myLoop」というワードも変数です。
「myLoop」が1,2,3・・・10と変わっていったと思います。まさに数が変わってますね。
 
 

■変数の宣言■

自分で「これは変数ですよ」と、前もってみんな(マクロ自体、共同でマクロを修正する人)にお知らせすることを「変数の宣言」と言います。
 
 
これもループ文のページに記載していましたが、sub ループ() のすぐ下の行の「Dim myLoop」が宣言している箇所となります。

 
 
そんなに難しくないと思いますが、いかがでしょうか?
(見慣れないために難しく感じることはあるかもしれません)
 
 

スポンサーリンク

■変数の型(カタ)について■

 
変数は「x」のようなものと上述しましたが、「x」のイメージだと数値しか入らないイメージになってしまうかもしれません。
そう思われた方、ごめんなさい。本当は文字列とかも入るんです。
 
 
例えば、
x = “abc”
x = “お父さん”
などの文字列も入れることができます。
 
この時に、文字列を表すダブルコーテーション(”)を忘れずに。
 
 
本題です。
どのウェブサイト・書籍を見ても、変数には型を指定しろ!と書いてあると思います。
 
 
なぜ変数に型をつけるのかというと、「変数を使用する」ということは、PCのメモリを「この分使うね」と変数が前もって占有してしまうところに理由があります。
 
数値でも文字列でもなんでも入れられる変数は、その占有面積が多く、数値だけが入れられる型(数値型)の変数は占有面積が少なくすみます。
 
 
上記の理由からメモリの占有を無駄に多くとらないように変数の型指定が必要とされています。
 
 
が!
 
 
オフィス田中の田中さんに言わせると「変数の型は指定しなくていい」です。私は田中さんの勉強会で直接習いました。
 
 
理由としては「一昔前と比べてPCの性能は格段に上がっているのでメモリの占有なんてあまり関係ないよね」とのことです。
なので私もあまり変数の型は指定していません。
(田中さんのサイトにもありますが、「かっこ悪い」「ベテランに嫌われる」などのデメリットもありますので慣れたら指定するようにしましょう。)
 
 
ループ文のページの記述も型指定していません。
本来ならDim myLoopのあとに As Longが入ることになりますが、あまり影響はないので忘れちゃってください。
 
 
 
ということで、変数について記載しましたが、多少なりとも抵抗は薄れましたでしょうか。
 
まとめ

  • 「変数」 → 数学の「x」みたいなもの
  • 「変数の宣言」 → subの下に Dim を書いて変数名を書くだけ
  • 「変数の型」 → とりあえずなにも考えない!
 
 
少しでもマクロ習得のお役に立つことができれば幸いです。

スポンサーリンク

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

%d人のブロガーが「いいね」をつけました。