VBA

【Excel】VBA  変数って何?(初心者でも分かりやすい解説)

【Excel】VBA

VBA(に限らず多くのプログラム言語)で、避けて通れないものに「変数」があります。

変数ってなに?

小難しい定義はあるようですが、ひとまず プログラムの中で 「データを入れておく箱」 だと思ってください。
(箱じゃなくて皿でもお茶碗でもいいんですけど) この箱には名前をつけて使います。

変数の特徴

まずは、プログラム例を見たほうがわかりやすいかもしれません。 プログラムの中に、下のような式があったら、cはいくつになるでしょうか? MsgBox(c)はcの値を表示するのですが、動かす前に考えてみてください。

Sub keisan() 
a = 5
b = 6
c = a + b
MsgBox(c)
End sub

動かしてみると、メッセージボックスに 11 と表示されたと思います。
予想通りですか? ここで使った a,b,cが「変数」です。 
a は 5,b は 6 、なので c = a + b = 5 + 6 = 11 これはアタリマエのようですが、
ここからもいろいろ分かる・確認することがあります

変数は中身を書き換えることができる。

変数は文字通り「変な数」です。 ・・・・うそです。
変数は箱なので、中身を出し入れすることができます。 たとえば次のプログラム

Sub keisan2() 
a = 5
b = 6
c = a + b
a = c + 2
MsgBox(a)
End sub

4行目は、 c に入っている値に 2 を足して、箱aに入れるという意味です。 a = c + 2 =(5 + 6)+ 2 = 13 この時元々入っていた5はなくなって、上書きされてしまいます。 そして、変数は自分自身に足したり引いたりした数を入れることができます。 ですので、次のように変数1つだけで計算することもできます。

Sub keisan3()
a = 5
a = a + 6
a = a + 2
MsgBox(a)
End sub

VBAの式と数式の「=」は意味が違う。

最初のプログラム、Sub keisan() をもう少し見てみましょう。 まずは

a = 5

の部分。 数学だと「=」は等号の印なので 「 a と 5は等しい」 と定義しているところです。
ですので、 「5 = a」でも成り立ちます。 でもVBAでは、「=」は等号ではなく、
左側に右側を入れる(「代入」といいます)の印と考えたほうか良いようです。 試しに次のようなプログラム

Sub keisan4()
5 = a
MsgBox(a)
End Sub

これは「構文エラー」になってしまいます。 先に書いたように変数は箱だと考えると、「=」の意味は
「左辺の変数に右辺の値を入れる」 ということになります。
ですので、5 = a は成り立たちません。 似ているけど、ちょっとだけ違います。 次に

c = a + b

の部分。 先の説明だと、cという箱に、箱a + 箱bを入れているので、c の中には箱が2つ入っていそうです。
でもSub keisan()の結果を見ると、c は 5,6 ではなくて 11でしたので、 箱cに 箱aの中身 と 箱bの中を足して入れる という意味のようです。 ところで箱cに入れたので、箱aと箱bは空になったのかというと、そんなことはありません。
箱aにも箱bにも中身はそのまま入っています。 ですので「取り出して箱を移し替え」ではないようです。

 ちょっとややこしいですね ひとまずは
「変数名が = の右側にあるときは、(変数自体ではなく)変数の中身と同じ値を意味する」
とおぼえておけばいいようです。
(万一、後々違う場合が出てきたときには、その時に考えましょう) こう考えると、Sub Keisan3()の例は、

  1. a に 5を入れる
  2. a に aの中身と同じ値(5) + 6を入れる
  3. aに aの中身と同じ値(11) + 2を入れる

ということになるので、理解しやすいかもしれません。

文字だって入れられる

実は、変数には(変「数」という名前のくせに)、文字列も入れられます。

Sub keisan()
c = "VBA"
c = c + "の勉強"
MsgBox(c)
End sub

動かしてみると、「VBAの勉強」という文字が表示されたと思います。

他にもいろいろ

変数には、ワークシートみたいな「オブジェクト」と呼ばれるものも入れられるようです。
でも今のところは、「変数はいろいろ入れられる箱」とだけ覚えておけはよさそうです。

変数の宣言

多くのプログラム言語では、プログラムには、 【どんな箱を使うのか】 を教えてあげなくちゃいけないようです。
教えてあげることを 「変数の宣言」 といいます。
VBAでも、本来はちゃんと宣言をしなくてはいけません。 でも、条件によっては「Call」命令と同じ様に省略可能なようです。

何を宣言するの?

VBAで変数を宣言するときには、変数(箱)の名前の他に、 「この箱にはどんなデータを入れるのか」 も宣言します。
この「どんな」はデータの形式です。
文字なのか数値なのか、オブジェクトなのかといった、データの大雑把なタイプや 数値でも、整数なのか小数なのか、
最大のデータの大きさはどれくらいなのか と、いろいろきまっているようです。
これらのデータの形式を一般的に 「データ型」とか単純に「型」といいます。
VBA でも、ヘルプを見ると使える「データ型」がいろいろと定義されてます。
でも、しばらくは数値(整数)と、文字列くらいしか使わないと思います。 必要になったら、そのときにもう少し調べてみましょう。

省略可能なのに宣言するの?

個々で試した程度の変数であれば、頭の中で把握していれば平気かもしれません。
でも、ちゃんとVBAに教えておくと 「この変数は数字のはずなのに、文字を入れようとしてるよ」 などと、
VBAがエラーを出して教えてくれたりします。
プログラムが大きくなると勘違いもでてきたりしますし、別のプログラム言語を使う機会もあるかもしれません。
省略可能な場合でもちゃんと宣言する癖をつけておいたほうが良いと思います。

変数の宣言の仕方

VBAでの変数の宣言は、頭にDimをつけて、変数の名前 as 変数の型 の順番に書いていきます。
普通は、プログラム(プロシージャ)の最初にまとめて書きますが、その変数を使う直前で宣言しても良いようです。
 先のプログラム(Sub keisan)の場合だと以下のようになります。

Dim a as Integer
Dim b as Integer
Dim c as Integer

名前は、例えばtotal など 1文字 でなくても構いません。 Integer は「整数」という意味です。
VBA では -32768 ~ 32767 の値の値を取れます。 文字列の場合は文字列形式を表す「String」という型で宣言します。

Dim mojiretsu As String

他にも、他のプログラム(プロシージャ)からも使えるようにするとか、
ほかからは使えないようにするとか指定することも可能です。
が、いっぺんに並べても覚えられないので、必要になったときに1つづつ覚えていきましょう。

まとめ

  • プログラム内でデータを扱うときには「変数」を使う事が多い
  • 変数は、データの入れ物「箱」のようなもの、中身を書きかえることができる。
  • 変数は、数値だけでなく、文字列や色んなタイプのデータを入れられるものがある。
  • 変数に値を入れるには、「変数名 = 値」と、変数名のあとに = を置いてから、値を書く。 値は計算式でもいい。このときの「=」は数学の等号ではなく、「代入する」という意味の記号。
  • = の右側の計算式に変数名があると、実際には「変数という箱の中身と同じ値」になる。
  • 変数は使う前にどんな変数を使うか「宣言」する。 宣言は「Dim 変数名 as データ型」の形式で書く。
  • 変数の宣言するときに指定できることはいろいろあるけど、ひとまずは最低限だけ覚えて、必要に応じて調べて覚える。
    (どうせわすれてまた調べるハメになるから)

次回は

もう少し基礎編として、定数のこととか、コメントのこととか書いてみようかと思います。


【Excel】VBA

VBA

オブジェクトのこと

ここまで、プログラムの実行結果を MsgBox()で確認していました。でも、そろそろ EXCEL のワークシートに出してもいいかなぁと思います。そこで今回は、VBA から EXECELワークシートをいじるのに欠かせない 「オブジェクト」 について勉強してみます。 変数や定数に演算などは、言葉は難しいけど日本語になっていました。でもオブジェクトなんて英語をそのままカタカナにした言葉は、日本語で理解しづらそうです。ですので、小分けにして少しづつ勉強して行きたいと思います。 もくじ1 ワークシートに "Hell ...

【Excel】VBA

VBA

【Excel】VBA たす・ひく・かける・わる(初心者でも分かりやすい解説)

VBA では、四則演算(たす・ひく・かける・わる)はどう表すのでしょう? もくじ1 四則演算1.1 足し算・引き算1.2 掛け算・割り算2 演算子2.1 演算子の種類2.2 演算の優先順位3  まとめ4  次回は 四則演算 今までに、説明なしに足し算を行ってきました。でも、なんとなくでわかりますよね。 足し算・引き算 足し算はこんな感じで、 変数=数値+数値  でした。 Sub test1() '---- 変数宣言 ----- Dim a as integer '---- プログラム ----- a = ...

【Excel】VBA

VBA

【Excel】VBA  定数とコメントのこと(初心者でも分かりやすい解説)

前回の変数に続いて、今回は定数についてです。 もくじ1 定数ってなにさ?2 定数の特徴2.1 変数との違いは2.2 定数の宣言2.3 ためしてみる3 変数だけじゃダメなの?3.1 なんで定数が必要なの?3.2 変数だけじゃダメな例3.3 定数を宣言してあると3.4 ということは4 コメントのこと4.1 コメントってなに4.2 VBAでのコメントの入れ方4.3 どんなときにコメント入れる?5 まとめ6 次回は 定数ってなにさ? 読んで字のごとく、「定まった数」です。・・・が、変数の場合と同じく「数値」だけで ...

【Excel】VBA

VBA

【Excel】VBA  変数って何?(初心者でも分かりやすい解説)

もくじ1 変数ってなに?2 変数の特徴2.1 変数は中身を書き換えることができる。2.2 VBAの式と数式の「=」は意味が違う。2.3 文字だって入れられる2.4 他にもいろいろ3 変数の宣言3.1 何を宣言するの?3.2 省略可能なのに宣言するの?3.3 変数の宣言の仕方4 まとめ5 次回は VBA(に限らず多くのプログラム言語)で、避けて通れないものに「変数」があります。 変数ってなに? 小難しい定義はあるようですが、ひとまず プログラムの中で 「データを入れておく箱」 だと思ってください。(箱じゃな ...

【Excel】VBA

VBA

【Excel】VBA 実際に動かしてみましょう(初心者でも分かりやすい解説)

もくじ1 プログラム例2 動かして見ましょう3 VBAエディタが教えてくれたこと3.1 「End Sub」の追加3.2 大文字小文字変換3.3 ()の追加4 プログラムの中身4.1 この行の意味4.2 MsgBox()4.3 CALL4.4 "Hello,Wrold!"の部分5 まとめ6 次回は プログラム業界の掟として、新しいプログラム言語を習うときには、「Hello world!」を表示するプログラムを作ることになっているようです。(誇張あり)実用性などは関係なく、まずプログラムが動作していることを経 ...

 就職や副業・在宅ワークにオススメ
 初心者さまにオススメの本
  • この記事を書いた人
  • 最新記事

セル

セル | Excel MOSエキスパート| 経理歴10年| 日商簿記2級 このブログでは Excelについて発信しています。 Excelに悩んでいる人の助けに少しでもなれたら嬉しいです! もし記事を気に入っていただけたらサイトをブックマークもしくは、Twitterをフォローお願いします!

-VBA