「エクセルを、自動化せよ」
連載:
エクセルで始める!VBAプログラミング入門
(Excelの作業を自動化できる、プログラミング超入門講座)【連載】
▼この連載は、ベネッセUdemyにて発売している動画コースの内容から一部を記事にしているものです。
動画でもっと分かりやすく勉強したい方は、こちらもご覧下さい。
(この連載限定で●%割引となります)
【好評につき、続編が出ました】
[脱・入門編]請求書を1クリックで作るマクロを作ろう
基本的なVBAの記述方法を学びはじめたマーク。
今回は、プログラミングの必修項目「変数」についてクマが語りはじめた…
[前回までのあらすじ]
Excel仕事に苦労していたカフェの店長マークは、突然あらわれたクマに、エクセルを自動化する「マクロ」を教わることになった。VBAの基本的な記述方法を学んだマークは、一発で割引価格にするマクロなどを作ることができた。そこで今回クマは、いよいよプログラミングの必須項目である「変数」について伝授することに…
今回は、「変数」という重要な話をする。
「変な数」ってこと?
変数とは、プログラミングをする上でとても大事な必修項目なのだ。
これ、引っかけ問題じゃないよね?
答えは… 「10」でしょ?
フッ、僕を見くびってもらっちゃ困るよ?(得意気)
そして、「3」という答えを、いったん頭の中に記憶していただろう?
その「6」も、頭の中に一時記憶しておいたろう?
こんな風に、頭の中で一時記憶しながら、それを使って計算していたのではないか?
我々人間(私はクマだが)は無意識のうちに一時記憶をうまく使っているのだが、
プログラミングでも、そういった一時記憶をよく利用する。
いまイメージで示したような、一時記憶の箱のようなものを「変数」と呼ぶのだ。
それを変数っていうのか!人間の考え方も、プログラムの考え方も、似てるんだねぇ…。
それでは今回は、VBAで実際に変数を活用してみるぞ!
(0)今回の実習内容
今回の実習内容はこちらです。
- (1)変数には「型」がある!
- (2)整数を入れる変数「Integer型」を使ってみよう!
- (3)変数を宣言するには?「Dim 変数名 As 型」
- (4)変数にデータを代入するには、「変数名 = データ」
- (5)変数のデータを使って計算し、結果を上書きする
- (6)変数の値をセルに挿入する
- (7)全体を見直してみよう!
実習ファイルをダウンロードしてみよう!
パソコンで以下のファイルをダウンロードして、実習を行うことができます。
(1)変数には「型」がある!
変数には、「型」というものがあります。
たとえば、クッキーやチョコレートを作るための「型」を思い浮かべてみましょう。
型に入れることができるのは、同じ形をしたクッキーだけです。
- ハートの型には、ハートの形のクッキーしか入らない。
- 星の型には、星の形のクッキーしか入らない。
- クローバーの型には、クローバーの形のクッキーしか入らない。
(上記は、本来のクッキーの型の使い方とは違っていますが、あまり気にしないで下さい。)
そして、変数の話にうつります。
実は、変数にも同じように、「型」があるのです。
その型の変数に入れることができるデータは、型に合っているデータだけです。
- 整数を入れるための変数…「Integer型」(インテジャー型)
- 文字列を入れるための変数…「String型」(ストリング型)
- どんなデータも入れることができる変数…「Variant型」(ヴァリアント型)
といったものがあります。
(種類はこれ以外にも色々あるのですが、ここでは入門編として、3つに絞って学習します。)
・ティッシュ箱にはティッシュしか入らないし、
・お菓子の箱にはお菓子しか入らない。
・おもちゃ箱にはおもちゃしか入らない。
・何でも入れていい箱もある。
そんなイメージかな?
(2)整数を入れる変数「Integer型」を使ってみよう!
まずは、整数を入れることができる変数として「Integer型」を使ってみましょう。
[このように「Sub Waribiki()」を書きかえてみましょう]
(3)変数を宣言するには「Dim 変数名 As 型」
「Dim number As Integer」という記述。
これは、「Integer型のnumberという変数を宣言する」という意味になる。
例えば、下のような変数を作りたいとしよう。
「Dim マイクッキー As ハート」
という風に記述すればいいわけだ。
「マイクッキー」というのが変数名、「ハート」というのが変数の「型」っていうわけか。
そして、本編では変数名「number」、変数の型は「Integer型」として宣言した。
ちなみにInteger型というのは、整数が入る型だ。
「Dim number As Integer」
と記述すればいいわけだ。
「Dim」と「As」は決まり文句みたいなもんなのね。
[ポイント]
変数を宣言するためには、
「Dim 変数名 As 型」と記述する。
(4)変数にデータを代入するには、「変数名 = データ」
「number = Selection.Value」
と記述している。これは、変数「number」に対して、Selection.Valueを代入するという意味だ。
だからここでは、選択しているセルの値を、numberに入れるっていう意味になるのか。
このように、変数に何かのデータを入れたい場合は
「変数名 = データ」
というように記述する。
注意してほしいのは「=」の意味だ。
数学なんかで「x = 5」と書いたら「xの中身は5である」という意味になるが、
VBAのようなプログラミング言語の多くでは、「x = 5」と書いた場合、「xの中に5を代入する」という意味になる。
(5)変数のデータをセルに挿入する
[ポイント]
変数にデータを格納するときは、
「変数名 = データ」と記述する
(5)変数のデータを使って計算し、結果を上書きする
「number = number * 0.5」という記述だな。
最初はヘンテコな式に見えるかもしれないが、
「変数 = 変数 * 0.5」
のように記述した場合、右辺の「変数 * 0.5」を計算して、その結果をもう一度変数に上書きするという意味になる。
「変数 = 変数 * 0.5」と書いてあった場合は、実際のニュアンスとしては
「変数 ← 変数 * 0.5」みたいに読みかえれば分かりやすいねぇ。
[ポイント]
変数の値を使って計算をし、その結果を変数に上書きするときは、
「変数 = 変数 * 0.5」のように記述する
(6)変数の値をセルに挿入する
「Selection.Value = number」という記述だな。
確かSelection.Valueはさっきも出てきたぞ、「現在選択しているセルの値」っていう意味だったなぁ…
今度は、変数「number」のデータを、選択中のセルに挿入するという意味になる。
[ポイント]
変数のデータを現在選択中のセルに挿入したい場合
「Selection.Value = 変数」のように記述すればいい
(7)全体を見直してみよう!
でもなんか、さっきと逆のことをしてるように見えるんだけど…?
このマクロって、結局何をしてるわけ?
1行目「Dim number As Integer」で、変数を宣言した。
2行目「number = Selection.Value」で、現在選択中のセルの値をnumberに格納した。
3行目「number = number * 0.5」で、numberに「×0.5」を計算して、結果を上書きした。
4行目「Selection.Value = number」で、numberのデータを現在選択中セルに書き込んだ。
セルの値を変数に取り出して、計算を終えてからセルに上書きしたってことだね!
変数を使っているおかげで、最初に説明した「計算の結果を一時記憶しておく」という役割を変数が担っているわけだな。
今回はここまで!
いかがだったでしょうか?
今回は以上です。
次回からは、
- そのほかの変数を使ってみよう!
などを解説して参ります。
この連載のような内容を動画のコースでわかりやすく解説しています。
(ベネッセUdemyにて動画コースが●%オフ)
【好評につき、続編が出ました】
[脱・入門編]請求書を1クリックで作るマクロを作ろう
連載:
エクセルで始める!VBAプログラミング入門
(Excelの作業を自動化できる、プログラミング超入門講座)
【連載】
- 第0回 エクセルを自動化する、マクロVBAプログラミングとは?
- 第1回 超親切な機能「マクロの記録」でマクロを始めよう!
- 第2回 マクロの中身を解明!初めてのVBAに挑戦
- 第3回 基本のVBAを記述してみよう!
- 第4回 続・基本のVBAを記述してみよう!
- 第5回 [変数]入門!プログラミングの必修項目(この記事)
- 第6回 もっと変数を使おう!String型とVariant型
- 第7回 もっと便利な「VBA関数」を使おう!