【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

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

【変数の使い方まとめ】

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

最後に

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

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

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

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