【VBAマクロ】変数とは?宣言や初期化方法をエクセル初心者向けに徹底解説

スポンサードリンク
VBA
過去の自分
過去の自分

VBAマクロを習い始めたんだけど、変数のところでつまずいている…。
エクセル初心者でもわかるように教えて!

今の自分
今の自分

勉強お疲れさまです。
変数は誰もがつまずくところです。安心してください。
では今回は、「VBAマクロの変数」について、
VBAマクロ歴3年の私が、できるだけわかりやすく解説いたします。

※わかりやすさを重視しております。厳密には解釈が異なる場合がありますことをご了承ください。

スポンサードリンク

変数とは

変数は、値を自由に入れ替えすることができるのようなものです。
カップグラスなどを思い浮かべていただくと、わかりやすいでしょうか。
ジュースなど、いろいろな中身(値)を自由に入れ替えることができます。

変数の説明1

変数の特徴として、器に入れることができる中身(値)は1つだけに限られます。
ジュースと麦茶など、2種類のものを入れることはできません。

変数の説明2

麦茶とジュースが混ざってジュース麦茶になったり、後から入れた濃いジュースの味が勝ってしまうのと同じで、別々には保持できないのです。

カップを空っぽにできるのと同様に、変数も空っぽにすることができます(初期化)

変数の説明3

【変数まとめ】

  • 変数は器
  • 変数は値を自由に入れ替えできる
  • 変数に入れることができる値は1つのみ
  • 変数は初期化(空っぽに)できる

変数の概要がわかったところで、変数を実際に使って簡単なマクロを作っていきましょう。

スポンサードリンク

VBAマクロの変数の使い方

マクロで変数を使う場合、「宣言」「代入」など、特徴的な処理があります。
まずは変数名を考えるところから解説いたします。

変数名を考えよう

日常のいろいろなものに名前があるのと同じで、変数にも名前をつける必要があります。
変数名は基本的に何でも構いませんが、以下のような条件があります。

【変数名の条件】

  • 先頭が数字でないこと(「1hensu」などはダメ)
  • 予約語は使えない(「if」や「for」などはダメ)

極端な話、「変数」や「●」など、漢字・ひらがな・カタカナ・記号も使えます。
しかしながら、「ン」と「ソ」など、よく似た文字を間違えると、違う変数として認識されるため、やめたほうがいいです。
半角英数字の変数名にすることをおすすめします。

変数の宣言

変数を使うには、プロシージャの最初で「宣言」をしましょう。
プロシージャについては、下記記事をご参考ください。

変数の宣言は「この名前の変数をこういう目的で使いますよ!」という報告のようなものでしょうか。
子供の頃、お母さんに「学校の授業で使うから筆ペン借りるよ!」などと報告した経験があると思います。
あんな感じだと思ってください。

変数を宣言せずに使うこともできますが、宣言をする方がわかりやすいので、必ずやりましょう。

変数は以下のように宣言します。

Dim 変数名 As 型名

「Dim」「As」は決まり文句のようなものなので、深く考えず使ってください。

「変数名」は先ほど考えた変数の名前です。

「型名」は変数の型で、どんな中身(値)を入れるかによって、変わってきます。
中身(値)が「文字」なら「String」「整数」なら「Integer」といった具合です。

「ティーカップ」や「シャンパングラス」みたいなものだと思ってください。

【変数の主な型名】

  • String:文字
  • Integer:整数
  • Date:日付
  • Range:セル座標
  • Wookbook:ワークブック
  • Wooksheet:ワークシート
  • Boolean:「True(真)」or「False(偽)」

今回は、簡単でよく使用する「文字」と「整数」を例に挙げて解説を続けます。
実際の宣言は以下のようになります。

変数に文字を入れる場合

Dim name As String

※「name」は変数名、「String」は型名

変数に整数を入れる場合

Dim num As Integer

※「num」は変数名、「Integer」は型名

変数に値を入れることを「代入する」といいます。
では代入の方法を見ていきましょう。

変数に値を代入

変数名 = "値"

上記一文が、変数に値を代入した例になります。
右辺に書いた値が、左辺の変数に代入されます。

値は必ず「”(ダブルクォーテーション)」で囲ってください。
囲わないと、変数と判断されてうまく動作しません。

では実際の代入例をお見せします。

変数に文字を代入する場合

name = "Utatane"

変数に整数を代入する場合

num = 1

整数の場合の値が「”」で囲われていませんが、間違いではありません。
数値の場合は例外で、「”」を省略することができます。

型の違う値を変数に入れることはできません。
例えば、整数型として宣言した変数に文字を入れることはできません。
ティーカップにみそ汁を入れるようなものだと思ってください。変ですよね…。

では、下記のように書いた場合はどうなるのでしょうか。

num = 1
num = 2

変数に値を追加することもできませんし、足されることもありません。
ですので最終的に変数に残るのは「2」となります。
別の値を代入した場合は、上書きされると思ってください。

では計算したい場合はどうするのか…ですが、下記のように記述してください。

num = 1 + 2

これで変数「num」には「3」が代入されます。
計算に変数を使うこともできます。

num = 1
num = num + 2

num(1)+2で、最終的には「3」が「num」に代入されます。

変数の型が文字の場合、計算はできませんが、文字を連結することができます。

name = "Utatane"
name = "私の名前は" + name

「私の名前は」と「name(Utatane)」が連結されるので、
最終的に変数「name」には「私の名前はUtatane」が代入されます。

しかしながら、下記のような計算や連結は、型違いのためできません。

num = 1
name = "Utatane"
name = name + num

numはInteger、nameはStringで型違いになるため、下図のようなエラーが出て実行できません。覚えておきましょう。

型違いの計算エラー

これ以上は複雑になるため、今回はここまでとします。

さて、変数に値を代入しただけでは、何もしていないのと同じです。
続いては、変数に代入した値を出力する方法を見ていきましょう。

変数に入った値を出力

今回は簡単な「A1セルに変数(の値)を書き込み」する方法を紹介いたします。
これまでの復習も含めて、マクロの全コードをお見せします。

Sub 変数解説1文字()

Dim name As String
name = "Utatane"
Range("A1").Value = name

End Sub
Sub 変数解説2整数()

Dim num As Integer
num = 1
Range("A1").Value = num

End Sub

それぞれ5行目が出力のコードです。
これで変数に代入された「Utatane」や「1」がA1セルに書き込みされます。

5行目のコードは、下記記事で例に挙げたコードの右辺が変数に変わっただけです。
詳しく知りたい場合はご覧ください。

変数の初期化

カップやグラスを空っぽにするような感じで、変数も空っぽにすることができます。
それが初期化です。

変数の型が「文字」の場合は、下記のコードで初期化をすることができます。

型が文字の場合

変数名 = ""

右辺は「”」を2つ並べただけです。
これまで「”」で値を囲ってきましたが、囲う値が無い(中身が無い空っぽ)という状態になり、初期化することができます。


型が整数の場合は、0を代入することで初期化されます。

型が整数の場合

変数名 = 0

変数に関する解説は以上です。
変数を使うことで、今日の日付をセルに書き込んだり、行番号・列番号を記載することも可能です。
簡単なものから試してみてください。

【変数の使い方まとめ】

  • 変数には型がある
  • 変数に値を入れることを「代入」という
  • 型違いの値を代入することはできない
  • 値は「”」で囲う(数値は例外)
  • 別の値を代入した場合は上書きされる
  • 変数で数値の計算や文字の連結ができる
  • 変数を初期化することで空っぽになる
スポンサードリンク

変数の中身(値)を確認する方法

変数の中身が何度も入れ替わるプログラムでは、どの時点でどの値が入っているのかが大事です。
キチンと想定どおりの値が格納されているのか、確認したい場面も出てくると思います。
そんな時のために、変数の中身(値)を確認する方法を紹介いたします。

1.まずは「ローカルウィンドウ」を表示させましょう。
 メニューの「表示」「ローカルウィンドウ」をクリックしてください。

変数の中身を表示する説明1

2.画面の下の方に「ローカルウィンドウ」が表示されたかと思います。

変数の中身を表示する説明2

3.続いて、変数の中身を知りたい場所のコード左側(今回は7行目の左側)をクリックしましょう。

変数の中身を表示する説明3

4.すると、クリックした部分にが付き、その行自体の色も変わったかと思います。

変数の中身を表示する説明4

これは「ブレイクポイント」といって、プログラム実行後はここで中断され、
変数の中身を確認することができます。

5.では、マクロを実行してみます。

変数の中身を表示する説明5

ローカルウィンドウに変数名や変数の中身が表示されました。
変数の型まで表示されているので、型エラーが起きた時に原因を特定しやすくなります。

再度マクロを実行すると、次のブレイクポイントで止まります。
以降にブレイクポイントが無ければ、マクロの最後まで実行されます。

ブレイクポイントを削除したい場合は、再度の個所をクリックしてください。

スポンサードリンク

最後に

VBAマクロの変数について解説いたしました。

当ブログでは、VBAマクロやPythonなど、時間を生み出すプログラミング術を公開しております。
この記事がわかりやすいと感じた方は、他の記事も読んでいってください。

最後までお読みいただき、ありがとうございました。がんばってください!

タイトルとURLをコピーしました