こんにちは、エクセル使いこなし隊 隊長の吉井良平です。
前回のレッスンで、それなりに実用的なマクロを作ることができました。
ただ、本当に実用的なマクロを作ろうとすると、毎回違った値を扱えるようにしておく必要があります。
今回は、毎回変わる値「変数」を理解して、本当に実用的なマクロが作れるようにしていきましょう!
目次
変数とは?
変数というのは、毎回変わる値のことです。
分かりやすくするために、中学校で習う方程式を書いてみますね。
例題
ある駄菓子屋で、「うまい棒」を販売しています。「うまい棒」の販売金額を表す方程式を作りなさい。
答え
y = 10x
うまい棒は 1本10円なので、うまい棒が x本売れた時の売上 y は、上記のような式になりますよね。
5本売れた日は、xに 5 を代入します。100本売れた日は、x に100を代入します。
そうすれば、売上金額 y が計算されて出てきますよね。
この x、y が、毎日変わるので、変数です。
エクセルのマクロもこんな感じで、あらかじめプログラムで式を作っておいて、毎回変わる部分に関しては変数にしておきます。
で、毎回変わる値を何らかの方法で取り出して、そのプログラムの中に代入していくのです。

やおきん様のホームページより^^
変数の種類(型)
変数は言葉の中に「数」という言葉が入っているので、数値だけかと思ってしまいますが、数値以外も変数にすることができます。
変数を指定するには、最初に変数の型(種類)を指定する必要があるので、まずは変数の型を覚えましょう。
とはいっても、このマクロ入門は「ノンプログラマーのための」と銘打っているので、数値型と文字列型だけを使っていって、残りは紹介するだけにしておきますね。
数値は Long
まず、数値は Long と覚えておいてください。
細かく言うと数値にもいろいろあるのですが、Longだけ覚えておけばなんとかなります。
文字列は String
変数には、文字列を指定することもできます。
文字列は、String と覚えておいてください。
その他の変数型
変数の型 | 指定方法 | 変数に設定される値 |
整数型 | Integer | -32,768から32,768までの整数 (30000以上の値を扱うことはよくあるので、Long型で覚えておいた方が無難) |
小数型 | Double | 小数を扱う場合は、Double。Singleというのもありますが、小数点の桁数が少ないので、これもDoubleで覚えておうた方が無難です。 |
日付型 | Date | 日付または時刻 |
オブジェクト型 | Object | ブックやワークシートを変数に入れる場合は、この型を使います。 |
ブール型 | Boolean | TrueまたはFalseを変数にする場合 |
バリアント型 | Variant | どんな種類の変数も入れることができます。便利といえば便利ですが、間違いに気づきにくくなるので、あまり使わない方が無難。 |
慣れてきたら、オブジェクト型と日付型はそれなりによく使うようになります。
よく使うものは自然に覚えるので、今の時点で無理して覚えなくて大丈夫です^^
変数の名前の付け方
変数は、自分で適当に名前をつけます。
マクロ名と同じように日本語でも大丈夫ですが、いちいち全角と半角を入れ替えするのは面倒なので、アルファベットでつけておく方が無難です。
あと、自分や人から見た時に何の変数か分からなくなることが良くあるので、分かりやすい名前を付けるようにしましょう。
具体的には、実際にプログラムを作っていく段階で、紹介していきますね。
実際に変数を使ってみる!
ここまで理屈ばっかり説明してきたので、ちょっと退屈したかもしれません。
実際に変数を使ったプログラムを書いていきましょう!
いつものように、ビジュアルベーシックエディターを立ち上げて、画面に表示させてください。

大体。このぐらいの大きさで
数値型を使ったテストプログラム
で、これもいつものように、下記のようにプログラムを入力してみてください。
自分で入力した方が覚えるので、まだコピペはできないようにしておきますね。

数値型の変巣を使ったプログラム
コードの説明
先ほど入力してもらったプログラム(コード)の説明をします。
2行目に、Dim N1 as Long と入力しましたよね。
変数の型を指定するには、このように「 Dim 変数名 as 変数の型 」と書いて指定します。
「N1という変数は、数値ですよ」と、まず変数を使う前に宣言しておくのです。
次に、今回初めて出てきた Inputbox という命令が出てきますが、この Inputbox という命令で、入力できる箱というか表示を出すことができます。

今回作ったINPUTBOX
Inputbox(“表示させる文字”,”タイトル”)という形で、インプットボックスを指定します。
N1 = InputBox(“好きな数字を入力してください”, “数値の入力”)
で、左側に変数、右側にInputBoxを入力して、=でつなぐと、インプットボックスで入力された値を、N1という変数に代入することができます。
日本語に訳すと、「N1は、インプットボックスに入力された値です」ということになりますね。
で、この変数N1を、範囲の終了セルの行番号に指定しています。
Range(Cells(1, 1), Cells(N1, 1)) = “ビバノンノン!”
このマクロを実行すると、シートの1列目に、入力した数分の ”ビバノンノン” が入ったはずです。

ババンババンバンバン♪
文字列型を使ったプログラム
このプログラムに、今度は文字列型の変数を足してみます。
赤線を引いた部分を付け加えてください。

赤線部分を追加、変更
コードの説明
Dim MyString As String で、「MyStringという変数は、文字列だよ」と宣言しています。
MyString = InputBox(“好きな言葉を入力してください”, “言葉の入力”)
で、インプットボックスに入力された値を、MyStringという変数に入れ込んでいます。
Range(Cells(1, 1), Cells(N1, 1)) = MyString
で、「セル1行目1列からN1行目の1列目は、MyString」 と命令をしています。
プログラムを実行して、100行でも1000行でも、好きな数だけ、好きな言葉を表示させてみてください^^

今回はドリフです^^
応用例:見積番号を自動採番しよう
変数を利用して、前回作った見積書のクリアプログラムに、見積番号の自動採番機能を追加してみましょう。

この番号を、自動的に取得する
次のようなコードを書いてみてください。

自動採番のプログラムを足した
コードの説明
前回のプログラムと違うところは、見積番号(H1のセル)の取り扱いです。
H1の内容はクリアせずに、
① Dim N1 As Long と、数値型の変数 N1 を作ります。
② N1 = Range(“H1”) で、H1のセルに入力されている見積番号を、N1の変数に入れ込みます。
③ Range(“H1”) = N1 + 1 で、H1のセルは、N1に格納されている前回の番号に、1を足した数にします。
ということで、前回の見積内容をクリアするごとに、新しい番号が振られるようになりました。
今回作った、見積書ファイルはこちらからダウンロードできます。

まとめ
- 変数を使うことで、毎回変化する値を扱うことができるようになります。
- 変数には、数値型(Long)、文字列型(String)などの種類があります。
- 変数の名前は、自分の好きなようにつけることができます。分かりやすい名前にしましょう。
- 変数は、Dim 変数名 as 変数の型 という形で、変数を使う前に宣言します。
- InputBox関数を使って、入力用のボックスを表示させることができます。
変数を使いこなすことができるようになると、かなり実用的なマクロも作れるようになっています。
次回は、ここまでのスキルでできる最も実用的(と思われる)名刺管理マクロを作ってみましょう!
↓ 次はこちらです ↓
VBAの記事を楽しく読ませていただいています。
タブレットやスマホで空き時間に読んでおります。
表内の文字の右端が読めません。
tableをスクロールできるように、「overflow: auto;」を追加していただけないでしょうか。
よろしくお願いいたします。
コメントありがとうございます^^(確認が遅くなり、申し訳ありません)
表が見切れていましたか。失礼いたしました。
そのようにやってみますね。ご指摘ありがとうございます!