初心者のためのExcelマクロ超入門(絶対できるVBA開発)

マクロがまったくわからない人のためにエクセルマクロやVBAについてできるだけわかりやすく書いています。Twitter:@shuhhohhey

初心者のためのExcel エクセルマクロVBA入門-変数を使う

以前やった変数のお話ですが・・・さてどうしたもんかと思いましたが、先人の人がとてもわかりやすく教えてくれているのでそれに沿って少し話をしたいと思います。

マクロの記録で変数は出てこない


まずプログラミング初心者の人がつまづくのはここです。最初のころにも制御構文とかIF文とかも説明しましたが、これらと同様変数もいわゆる「マクロの記録」をしても、出てくることはありません。しかし、マクロをマスターしたいなら絶対に覚えなければいけないことです。しかし、、、
あえてクソ見たいと言いますが、そのクソみたいなマクロの講義や解説とかだと、

「マクロなんて簡単です!マクロを記録すればいいんです!これであなたもマクロ使い!」

もうね、バカかと。アホかと。

残念ながらこんなことはありません。マクロの記録を使ってマクロができるようになった!という人を私は今まで見たことがありません。挫折した人はたくさん見ていますが。。。
エクセルマクロをマスターしたいなら、プログラミング言語を学ぶしかないんです。
その大切なひとつが、前に説明した「オブジェクト」に続く、もう1つの関門。

変数


です。

変数とはデータ(値)を入れる箱である


最初の解説でもやってるんですけど、やっぱりこういうしかない。変数とは値やオブジェクトなどの様々な「データ」を名前を付けて入れて格納することができる箱みたいなものです。


f:id:drumer2sh:20130718172419p:plain

前に説明した時と同じ図です。変数は自分で名前を勝手につけて、そこにいろんなものを格納しておくことができるのです。変数には

  • 1つの箱には1つの値・オブジェクトしか入れられない。
  • 作った箇所によっては途中で消えてしまう。
  • 何度でも入れ直すことができる。

という性質があります。特に1つ目の性質は大切ですので覚えておいてください。
ではこの箱を使うにはどうしたらいいのでしょうか?
簡単3STEPで使うことができます。

  1. 変数を作る(宣言する)
  2. 変数にデータを入れる
  3. 使う


いじょ。必ずこの手順で変数は使います。特に1番目の変数を作る作業は絶対にしてください。変数を作る作業を

変数を宣言する

と言います。変数は必ず宣言します。何で?とかその辺はとりあえず置いといて、まずはとりあえず、変数にデータを入れてみます。変数に値(データ)を入れるには・・・

変数 = データ

として代入式を使います。以前やりましたね!代入式です。左辺に右辺を入れるというイメージです。具体的な例で書くと。。

hoge = 1000

となります。ここではhogeという名前を付けた箱に1000を入れています。この箱にデータを入れるというイメージはとても大事です。このイメージがないと・・・

hoge = 100
hoge = hoge + 1000

と書くとなんのこっちゃ?となります。箱にデータを格納するわけですから、右辺の結果が左辺に入るということになります。ですのでhogeに入っているデータと1000を足して改めてhogeに入れ直す。という意味になります。hogeには1100が入ってることになりますね。

変数を使う。

変数を使うのは簡単です。先にも書いた通り、使いたいところで変数の名前を書けばいいだけです。

hoge = 1000
Sheet1.Range("A1").Value = hoge

だけです。超簡単!!これでA1セルに1000が入力されます。

変数は何が便利なの?


ここまで読んでいただいて、思ったことはきっと、


「使い方はわかったけど何が便利なの?」


ということでしょう。さっきのも別にSheet1.Range("A1").Value = 1000でいいじゃん。と思ったはずです。そう、初心者ならね。でもちょっと考えてみてください。例えばいろんなセルに1000と入力するマクロを作るとしましょう。そうですねー、100か所くらいですか。制御構文とかとりあえず考えないで、普通に100行入力する命令文を書けばいいですよね?

さて、では、それを作った後に1000ではなくて実は1232でした!となったらどうでしょうか?100行のコードをすべて書き直す必要があります。

しかし・・・こう書いていたら?

hoge = 1000
Sheet1.Range("A1").Value = hoge
Sheet1.Range("A2").Value = hoge
Sheet1.Range("A3").Value = hoge
・・・
・・・
・・・
Sheet1.Range("A100").Value = hoge

どうでしょうか?これならたった一行、1000を1232に書き換えるだけです。変数を使うことでエクセルとのコミュニケーションがとても楽になるのが分かっていただけたと思います。


次回は変数を宣言する!です。


今日はここまで!