今回の第9回VBA超入門講座では変数の使い方について解説します。
変数は複雑な処理を行うのに必須のスキルです。
ぜひ今回の講座でVBAでの変数の使い方についてをマスターしましょう!!
変数とは
今日はVBAでの変数の使い方について教えるよ。
変数って何ですか?
変数とは簡単に言うとデータを入れる箱のことを言うよ。
データを入れる箱…?
すみません、よくイメージが付きません…。
じゃあ具体的な例で説明するね。
例えば、次の少年のプロフィールを例に説明しよう。
この「生年月日」「年齢」「住所」「趣味」がそれぞれ箱になっているよ。
絵で表すと次のようになります。
このように「生年月日」「年齢」「住所」「趣味」それぞれの箱が変数と呼ばれるものです。
それぞれの箱には「2010/7/23」や「サッカー」といった数値や文字列が格納されています。
んー、何となくイメージはつきました。
それぞれの箱(変数)には入れられる物の種類が決まっているよ。
また、箱にはそれぞれ使い方が決まっているよ。
次の章から具体的に説明していきます。
データ型とは
変数のイメージが何となくつかめたところで、データ型について説明するよ。
データ型?
データ型とはその名の通り、データの型を意味するよ。
データがどんな型をしているのかを指すよ。
データ型の種類
データ型の種類には主に以下のものがあります。
データ型 | 名称 | 値の例 |
String | 文字列型 | 任意の長さの文字列 |
Byte | バイト型 | 0~255の整数 |
Integer | 整数型 | -32,768~32,767の整数 |
Long | 長整数型 | -2,147,483,648~2,147,483,647の整数 |
Single | 単精度浮動小数点型 | 負の値:-3.402823×10(38乗) ~ -1.401298×10(-45乗) 正の値:1.401298×10(-45乗) ~ 3.402823×10(38乗) |
Double | 倍精度浮動小数点数型 | 負の値:-1.79769313486231×10(308乗) ~ -4.94065645841247×10(-324乗) 正の値:4.94065645841247×10(-324乗) ~ 1.79769313486232E308×10(308乗) |
Date | 日付型 | 西暦100年1月1日~西暦9999年12月31日までの日付と時刻 |
Boolean | ブール型 | 真(True)または偽(False) |
Currency | 通貨型 | -922,337,203,685,477.5808~922,337,203,685,477.5807 |
Object | オブジェクト型 | オブジェクトを参照するデータ型 |
Variant | バリアント型 | 全てのデータ型 |
さっきのサッカー少年の例でいうと以下の通りになります。
- 生年月日は日付型(Date)
- 年齢は整数型(Integer)
- 住所と趣味は文字列型(String)
データ型によって入れていい箱が決まっているんだ。
日付型には日付型の変数に、文字列は文字列型の変数に入れないとだめだよ。
【正しい例】
【誤っている例】
なるほど。それぞれの入れて良い箱が決まっているんですね。
その通り!
ただ、データ型の種類がたくさんありすぎて覚えられません
心配しなくても大丈夫だよ。よく使うものは決まっているし、全て覚える必要ないよ。あと、VBAを書いていると自然と覚えてくるよ。
よく使うものは文字列型(String)や整数型(Integer)、ブール型(Boolean)などかな。
なるほどー。頑張って徐々に覚えていきます。
- データ型にはいくつか種類があり、変数ごとに入れられるデータ型が決まっている
- よく使うものは文字列型(String)や整数型(Integer)、ブール型(Boolean)
バリアント型について
一つ気になるのが、バリアント型なんですが。
全てのデータって何でも入れて良い箱って事ですか?
その通り!何でも入れて良いジョーカーみたいな役割を担っているよ。
どのデータ型か分からない場合はバリアント型を使えば大丈夫だよ。
では面倒なことは考えずに、何でもバリアント型を指定すれば良いのではないか?と思う方も多いかと思いますが、バリアント型の多用は禁物です。
バリアント型は万能で便利な反面、余計なデータが代入されてしまう可能性があります。
簡単なマクロなら問題ないですが、複雑なマクロになればなるほど不具合発生の可能性も出てきます。
また余計なメモリを使用してしまう可能性があります。
何でも入る大きい頑丈な箱をたくさん使うと部屋もかさばりますよね。
なるべく適切な箱を用意してあげましょう。
変数の定義方法
VBAで変数を定義するときには「Dim」と「As」を使用して次のように記載します。
具体例を見てみましょう。
誕生日の変数(文字列)を定義する場合の例は以下のようになります。
このように宣言して使うよ。
変数の宣言方法や変数名には規則があるかよ。次の章から一つずつ解説していくよ。
変数名の規則について
変数名を定義するときにいくつか規則があります。
変数名を付けるときには以下のことに注意しましょう。
規則1.使用できる文字は半角、全角の数値と文字列
英字、ひらがな、全角カタカナ、漢字、数字、アンダーバー(_)が使用可能です。
※記号やスペースキーは使用できません
規則2.先頭は文字でなければならない
先頭の文字は文字列でなければなりません。
変数名の先頭に数字やアンダーバー(_)などは使用できません。
(例)OK:Dim strAddress As String
NG:Dim 1Address As String
規則3.VBAが意味を持たせている語句(予約語)は使用できない
VBAでは意味を持たせている語句(予約語)というものが存在しています。
予約語が優先されるため、そういった語句は使用できません。
例えばif文で使う「if」などです。
※If文の使い方については第6回講座参照ください
規則4.同じ名前の変数を宣言することはできない
同じ名前を同一処理範囲内で宣言することはできません。
規則5.データの内容が想像しやすい名前にする
データの内容が分かりやすい名前にしましょう。
名前で判断出来るようにするとVBA記載するときに大変楽になります。
色々と規則があるんですねー。
そう。この中でも大事なのは規則5の「データの内容が想像しやすい名前にする」という事だよ。
次のどっちが住所を定義した変数だと分かりやすいかな?
(例1)の方が住所を定義している変数って分かりやすいです。
その通り。データの中身が想像しやすい変数名にすることでVBA記載するときにも楽になるよ。
規則1~4については必須ですが、規則5については必須ではありません。
規則1~4はVBAがエラーを出して教えてくれますが、規則5については必須ではないため教えてくれません。
しかし規則5がVBA記載するうえで一番大事です。
いい加減な変数名を付けると「あれ?この変数ってどういう意味だっけな?」と分からなくなってしまいます。
変数名から想像しやすい名前にしておくことで、VBA記載するときに分かりやすくなります。
分かりやすい変数名を付けるように普段から心がけましょう。
その他規則:変数名の先頭にデータ型の略称を記載する
これも必須ではありませんが、分かりやすくするためにおすすめの命名方法です。
例えば、以下のように命名します。
(例1)データ型(String型)の場合、「String」の略称の「str」をつけます。
(例2)整数型(Intger)の場合、「Integer」の略称の「int」をつけます。
必須ではありませんので、無理にこの規則を守らなくて大丈夫です。
分かりやすくするために筆者はおススメします。
※VBA組める人はこの規則に従うことが多いです。
変数の格納方法
変数の定義方法や命名規則が分かったところで、実際に変数に値を格納する処理をみていきましょう。
変数にデータを入れる
変数にデータを入れるときには左辺に変数名、右辺にデータの内容を記載します。
(例)住所の変数「strAddress」に住所を入れる場合
変数のデータ内容を取得する
変数に入れたデータの内容を取得する場合は対象を左辺、変数名を右辺に記載します。
(例)A1セルに変数「strAddress」を入れる場合
また先ほどのサッカー少年を例にして見てみます。
次のExcelに生年月日、年齢、住所、趣味をそれぞれ変数に入れ、Excel上に記載するVBAを記載してみます。
このExcelに値を入れるマクロは次のようになります。
まず、変数にデータ内容を入れる部分はVBAでは次のように記載します。
intAge = 11
strAddress = “東京都品川区〇〇〇町ー△△△ーXXX”””
strHobby = “サッカー”
次に、セルに変数の内容を記載する部分はVBAでは次のように記載します。
Range(“B2”) = intAge
Range(“B3”) = strAddress
Range(“B4”) = strHobby
このように変数に入れたデータを用いてExcel上にデータの内容を記載することが出来るよ。
さらに、if文と変数を組み合わせて条件式を作成する事が出来ます。
一度の講座では長くなってしまうため、今回の講座では変数の使い方の基礎編という事で、ここまでの解説にします。
if文との組み合わせ方法については次回の講座で解説します。
まとめ
今回の講座では変数(DIM)の使い方について解説しました。
少しボリュームが多くなってしまいましたが、変数はマクロを作成するうえで必須のスキルです。
今回の講座では基礎部分を解説しました。
If文などとの組み合わせで更に複雑な処理を作成することも可能です。
より詳しい使い方については次回以降の講座で解説します。
最後までお読みいただき、ありがとうございました!
~天然マクロ学校~
コメント