1424930_6867_3

「エクセルを、自動化せよ」

連載:

エクセルで始める!VBAプログラミング入門
(Excelの作業を自動化できる、プログラミング超入門講座)

【連載】

▼この連載は、ベネッセUdemyにて発売している動画コースの内容から一部を記事にしているものです。
動画でもっと分かりやすく勉強したい方は、こちらもご覧下さい。
(この連載限定で●%割引となります)

screenshot_79

【好評につき、続編が出ました】
[脱・入門編]請求書を1クリックで作るマクロを作ろう

screenshot_80

 

基本的なVBAの記述方法を学びはじめたマーク。
今回は、プログラミングの必修項目「変数」についてクマが語りはじめた…

[前回までのあらすじ]

Excel仕事に苦労していたカフェの店長マークは、突然あらわれたクマに、エクセルを自動化する「マクロ」を教わることになった。VBAの基本的な記述方法を学んだマークは、一発で割引価格にするマクロなどを作ることができた。そこで今回クマは、いよいよプログラミングの必須項目である「変数」について伝授することに…

background

 

マーク
少し難しくなってきたけど、「プログラミングしてる」っていう実感がわいてきたなぁ~

 

クマリオ
ふむ。ここまでVBAを記述できると、「マクロの記録」だけでは作成できないような機能をすでに作れるようになっているぞ。

 

クマリオ
…とまぁ、それは置いておいて。

今回は、「変数」という重要な話をする。

 

screenshot_194

 

マーク
「変数」?
変な数」ってこと?

 

クマリオ
…いや違う。絶対に。
変数とは、プログラミングをする上でとても大事な必修項目なのだ。

 

クマリオ
まず、変数を理解するために、こんなクイズに答えてもらおう。
マーク
うん?

クマリオ
この計算はできるかな?

 

マーク
…え?
これ、引っかけ問題じゃないよね?

 

クマリオ
うむ。引っかけ問題ではない。素直に計算してみろ。

 

 

マーク
いや~、さすがの僕でもこれはできるよ。

答えは… 「10」でしょ?

フッ、僕を見くびってもらっちゃ困るよ?(得意気)

 

クマリオ
その通りだ。まぁ、このくらいはできて当然なんだが、それはさておき。

マーク
「…」

 

クマリオ
この計算を、どういうプロセスで計算したのかが大事なのだ。

 

マーク
?というと?

 

クマリオ
頭の中でこんな計算をしたんじゃないか?

 

screenshot_191

 

クマリオ
まず、最初の「1+2」を計算した。
そして、「3」という答えを、いったん頭の中に記憶していただろう?

 

マーク
うん、確かに?

 

クマリオ
そして次に、だ。

screenshot_192

 

クマリオ
記憶しておいた「3」と、次の「3」を足して、3+3=6を計算した。

その「6」も、頭の中に一時記憶しておいたろう?

 

マーク
言われてみれば、そうだなぁ。

 

クマリオ
そして最後に。

 

screenshot_193

 

クマリオ
記憶しておいた「6」と、次の「4」を足すことで、答えが「10」と出た。

こんな風に、頭の中で一時記憶しながら、それを使って計算していたのではないか?

 

マーク
う~ん。自分では自然とやっていたんだけど、考えてみればそうなるなぁ。

 

クマリオ
そう。
我々人間(私はクマだが)は無意識のうちに一時記憶をうまく使っているのだが、

プログラミングでも、そういった一時記憶をよく利用する。

いまイメージで示したような、一時記憶の箱のようなものを「変数」と呼ぶのだ。

screenshot_194

マーク
なるほどー!
それを変数っていうのか!人間の考え方も、プログラムの考え方も、似てるんだねぇ…。

 

クマリオ
まぁ、そういうことだな。

それでは今回は、VBAで実際に変数を活用してみるぞ!

 

(0)今回の実習内容

今回の実習内容はこちらです。

  • (1)変数には「型」がある!
  • (2)整数を入れる変数「Integer型」を使ってみよう!
  • (3)変数を宣言するには?「Dim 変数名 As 型」
  • (4)変数にデータを代入するには、「変数名 = データ」
  • (5)変数のデータを使って計算し、結果を上書きする
  • (6)変数の値をセルに挿入する
  • (7)全体を見直してみよう!

実習ファイルをダウンロードしてみよう!

パソコンで以下のファイルをダウンロードして、実習を行うことができます。

screenshot_78
section2-end-file.xlsm

(1)変数には「型」がある!

変数には、「型」というものがあります。
たとえば、クッキーやチョコレートを作るための「型」を思い浮かべてみましょう。

型に入れることができるのは、同じ形をしたクッキーだけです。

  • ハートの型には、ハートの形のクッキーしか入らない。
  • 星の型には、星の形のクッキーしか入らない。
  • クローバーの型には、クローバーの形のクッキーしか入らない。

(上記は、本来のクッキーの型の使い方とは違っていますが、あまり気にしないで下さい。

そして、変数の話にうつります。

実は、変数にも同じように、「型」があるのです。

2018-06-12_17h24_44
その型の変数に入れることができるデータは、型に合っているデータだけです。

  • 整数を入れるための変数…「Integer型」(インテジャー型)
  • 文字列を入れるための変数…「String型」(ストリング型)
  • どんなデータも入れることができる変数…「Variant型」(ヴァリアント型)

といったものがあります。
(種類はこれ以外にも色々あるのですが、ここでは入門編として、3つに絞って学習します。)

マーク
ふ~ん。つまり「箱」といっても色んな箱があるわけか。
・ティッシュ箱にはティッシュしか入らないし、
・お菓子の箱にはお菓子しか入らない。
・おもちゃ箱にはおもちゃしか入らない。
・何でも入れていい箱もある。
そんなイメージかな?

クマリオ
そういうことだ。型が決まっている箱に、間違ったデータを入れようとするとエラーが起きてしまうから注意が必要だ。

(2)整数を入れる変数「Integer型」を使ってみよう!

まずは、整数を入れることができる変数として「Integer型」を使ってみましょう。

2018-06-12_17h17_51

[このように「Sub Waribiki()」を書きかえてみましょう]

(3)変数を宣言するには「Dim 変数名 As 型」

クマリオ
まず最初の
「Dim number As Integer」という記述。

これは、「Integer型のnumberという変数を宣言する」という意味になる。

マーク
え?どういうこと?

 

クマリオ
うむ。もうちょっと分かりやすく説明してみよう。
例えば、下のような変数を作りたいとしよう。

2018-06-12_17h50_00

クマリオ
この場合、VBAでは、
Dim マイクッキー As ハート」
という風に記述すればいいわけだ。
マーク
あぁなるほど!
「マイクッキー」というのが変数名、「ハート」というのが変数の「型」っていうわけか。

 

クマリオ
そういうことだ。
そして、本編では変数名「number」、変数の型は「Integer型」として宣言した。
ちなみにInteger型というのは、整数が入る型だ。

2018-06-12_17h46_03

クマリオ
この場合、VBAでは、
Dim number As Integer」
と記述すればいいわけだ。
マーク
うんうん。
「Dim」と「As」は決まり文句みたいなもんなのね。

[ポイント]

変数を宣言するためには、
「Dim 変数名 As 型」と記述する。

 

(4)変数にデータを代入するには、「変数名 = データ」

クマリオ
次の行では、
「number = Selection.Value」
と記述している。これは、変数「number」に対して、Selection.Valueを代入するという意味だ。
マーク
う~ん、「Selection.Value」って何だっけ?

 

クマリオ
Selection.Valueというのは、現在選択しているセルの値という意味だ。
マーク
あぁ!
だからここでは、選択しているセルの値を、numberに入れるっていう意味になるのか。

2018-06-12_18h00_46

クマリオ
うむ、そういう事だ。
このように、変数に何かのデータを入れたい場合は
変数名 = データ
というように記述する。

注意してほしいのは「=」の意味だ。
数学なんかで「x = 5」と書いたら「xの中身は5である」という意味になるが、
VBAのようなプログラミング言語の多くでは、「x = 5」と書いた場合、「xの中に5を代入する」という意味になる

(5)変数のデータをセルに挿入する

 

[ポイント]

変数にデータを格納するときは、
変数名 = データ」と記述する

 

(5)変数のデータを使って計算し、結果を上書きする

クマリオ
次の行にあるのは、
「number = number * 0.5」という記述だな。
マーク
えぇと、「*」っていうのは、掛け算の「×」と同じ意味になるから…

 

クマリオ
そう。ここでは掛け算をしているわけだ。

2018-06-12_18h11_26

 

マーク
ん?numberに0.5を掛け算して、またnumberに入れるっていうこと?
クマリオ
ここが混乱するかもしれないな。
最初はヘンテコな式に見えるかもしれないが、
「変数 = 変数 * 0.5」
のように記述した場合、右辺の「変数 * 0.5」を計算して、その結果をもう一度変数に上書きするという意味になる。

 

マーク
う~ん。
「変数 = 変数 * 0.5」と書いてあった場合は、実際のニュアンスとしては
「変数 変数 * 0.5」みたいに読みかえれば分かりやすいねぇ。

[ポイント]

変数の値を使って計算をし、その結果を変数に上書きするときは、
変数 = 変数 * 0.5」のように記述する

 

(6)変数の値をセルに挿入する

クマリオ
最後の記述は、
Selection.Value = number」という記述だな。
マーク
うん?
確かSelection.Valueはさっきも出てきたぞ、「現在選択しているセルの値」っていう意味だったなぁ…
クマリオ
そうだ。もうわかったかな?
今度は、変数「number」のデータを、選択中のセルに挿入するという意味になる。

2018-06-12_18h00_46

 

クマリオ
変数のデータをセルに挿入したい場合は、このように記述すればいいというわけだ。

 

[ポイント]

変数のデータを現在選択中のセルに挿入したい場合

Selection.Value = 変数」のように記述すればいい

 

(7)全体を見直してみよう!

マーク
そういうことかぁ~。
でもなんか、さっきと逆のことをしてるように見えるんだけど…?
このマクロって、結局何をしてるわけ?
クマリオ
うむ。ちょっと一度、全体を見直してみようか。

2018-06-12_18h38_11

1行目「Dim number As Integer」で、変数を宣言した。

2018-06-12_17h46_03

2行目「number = Selection.Value」で、現在選択中のセルの値をnumberに格納した。

2018-06-12_18h00_46

3行目「number = number * 0.5」で、numberに「×0.5」を計算して、結果を上書きした。

2018-06-12_18h11_26

4行目「Selection.Value = number」で、numberのデータを現在選択中セルに書き込んだ。

2018-06-12_18h00_46

 

マーク
あぁ、全体を見直したらわかってきた!
セルの値を変数に取り出して、計算を終えてからセルに上書きしたってことだね!
クマリオ
そういうことだ。
変数を使っているおかげで、最初に説明した「計算の結果を一時記憶しておく」という役割を変数が担っているわけだな。

 

今回はここまで!

いかがだったでしょうか?

 

今回は以上です。

次回からは、

  • そのほかの変数を使ってみよう!

などを解説して参ります。

 

 

この連載のような内容を動画のコースでわかりやすく解説しています。

(ベネッセUdemyにて動画コースが●%オフ)

screenshot_79

 

【好評につき、続編が出ました】
[脱・入門編]請求書を1クリックで作るマクロを作ろう

screenshot_80

 

 

連載:

エクセルで始める!VBAプログラミング入門
(Excelの作業を自動化できる、プログラミング超入門講座)

【連載】