エクセルVBA超入門講座(第9回)変数(DIM)の使い方

excel-vba-lecture09 Excelマクロ

今回の第9回VBA超入門講座では変数の使い方について解説します。

変数は複雑な処理を行うのに必須のスキルです。

ぜひ今回の講座でVBAでの変数の使い方についてをマスターしましょう!!

変数とは

天馬先生
天馬先生

今日はVBAでの変数の使い方について教えるよ。

たけし
たけし

変数って何ですか?

天馬先生
天馬先生

変数とは簡単に言うとデータを入れる箱のことを言うよ。

たけし
たけし

データを入れる箱…?

すみません、よくイメージが付きません…。

天馬先生
天馬先生

じゃあ具体的な例で説明するね。

例えば、次の少年のプロフィールを例に説明しよう。

soccer-boy-profile

 

天馬先生
天馬先生

この「生年月日」「年齢」「住所」「趣味」がそれぞれ箱になっているよ。

絵で表すと次のようになります。

profile-box

このように「生年月日」「年齢」「住所」「趣味」それぞれの箱が変数と呼ばれるものです。

それぞれの箱には「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)
天馬先生
天馬先生

データ型によって入れていい箱が決まっているんだ。

日付型には日付型の変数に、文字列は文字列型の変数に入れないとだめだよ。

【正しい例】

data-model-OK3

【誤っている例】

data-model-NG

たけし
たけし

なるほど。それぞれの入れて良い箱が決まっているんですね。

天馬先生
天馬先生

その通り!

たけし
たけし

ただ、データ型の種類がたくさんありすぎて覚えられません

天馬先生
天馬先生

心配しなくても大丈夫だよ。よく使うものは決まっているし、全て覚える必要ないよ。あと、VBAを書いていると自然と覚えてくるよ。

天馬先生
天馬先生

よく使うものは文字列型(String)や整数型(Integer)、ブール型(Boolean)などかな。

たけし
たけし

なるほどー。頑張って徐々に覚えていきます。

  • データ型にはいくつか種類があり、変数ごとに入れられるデータ型が決まっている
  • よく使うものは文字列型(String)整数型(Integer)ブール型(Boolean)

バリアント型について

たけし
たけし

一つ気になるのが、バリアント型なんですが。

全てのデータって何でも入れて良い箱って事ですか?

天馬先生
天馬先生

その通り!何でも入れて良いジョーカーみたいな役割を担っているよ。

どのデータ型か分からない場合はバリアント型を使えば大丈夫だよ。

joker-card

では面倒なことは考えずに、何でもバリアント型を指定すれば良いのではないか?と思う方も多いかと思いますが、バリアント型の多用は禁物です。

バリアント型は万能で便利な反面、余計なデータが代入されてしまう可能性があります。

簡単なマクロなら問題ないですが、複雑なマクロになればなるほど不具合発生の可能性も出てきます。

また余計なメモリを使用してしまう可能性があります。

何でも入る大きい頑丈な箱をたくさん使うと部屋もかさばりますよね。

なるべく適切な箱を用意してあげましょう。

変数の定義方法

VBAで変数を定義するときには「Dim」と「As」を使用して次のように記載します。

Dim 変数名 As データ型名

具体例を見てみましょう。

誕生日の変数(文字列)を定義する場合の例は以下のようになります。

Dim strAddress As String
この定義によって「strAddress」という名前の文字列型の変数が定義出来ました。
 
天馬先生
天馬先生

このように宣言して使うよ。

変数の宣言方法や変数名には規則があるかよ。次の章から一つずつ解説していくよ。

変数名の規則について

変数名を定義するときにいくつか規則があります。

変数名を付けるときには以下のことに注意しましょう。

規則1.使用できる文字は半角、全角の数値と文字列

英字、ひらがな、全角カタカナ、漢字、数字、アンダーバー(_)が使用可能です。

※記号やスペースキーは使用できません

規則2.先頭は文字でなければならない

先頭の文字は文字列でなければなりません。

変数名の先頭に数字やアンダーバー(_)などは使用できません。

(例)OK:Dim strAddress As String

   NG:Dim 1Address As String

規則3.VBAが意味を持たせている語句(予約語)は使用できない

VBAでは意味を持たせている語句(予約語)というものが存在しています。

予約語が優先されるため、そういった語句は使用できません。

例えばif文で使う「if」などです。

※If文の使い方については第6回講座参照ください

規則4.同じ名前の変数を宣言することはできない

同じ名前を同一処理範囲内で宣言することはできません。

規則5.データの内容が想像しやすい名前にする

データの内容が分かりやすい名前にしましょう。

名前で判断出来るようにするとVBA記載するときに大変楽になります。

たけし
たけし

色々と規則があるんですねー。

天馬先生
天馬先生

そう。この中でも大事なのは規則5の「データの内容が想像しやすい名前にする」という事だよ。

天馬先生
天馬先生

次のどっちが住所を定義した変数だと分かりやすいかな?

(例1)Dim strAddress As String
(例2)Dim aaa As String
たけし
たけし

(例1)の方が住所を定義している変数って分かりやすいです。

天馬先生
天馬先生

その通り。データの中身が想像しやすい変数名にすることでVBA記載するときにも楽になるよ。

規則1~4については必須ですが、規則5については必須ではありません

規則1~4はVBAがエラーを出して教えてくれますが、規則5については必須ではないため教えてくれません。

しかし規則5がVBA記載するうえで一番大事です。

いい加減な変数名を付けると「あれ?この変数ってどういう意味だっけな?」と分からなくなってしまいます。

変数名から想像しやすい名前にしておくことで、VBA記載するときに分かりやすくなります。

分かりやすい変数名を付けるように普段から心がけましょう。

その他規則:変数名の先頭にデータ型の略称を記載する

これも必須ではありませんが、分かりやすくするためにおすすめの命名方法です。

例えば、以下のように命名します。

(例1)データ型(String型)の場合、「String」の略称の「str」をつけます。

Dim strAddress As String

(例2)整数型(Intger)の場合、「Integer」の略称の「int」をつけます。

Dim intAge As Integer

必須ではありませんので、無理にこの規則を守らなくて大丈夫です。

分かりやすくするために筆者はおススメします。

※VBA組める人はこの規則に従うことが多いです。

変数の格納方法

変数の定義方法や命名規則が分かったところで、実際に変数に値を格納する処理をみていきましょう。

変数にデータを入れる

変数にデータを入れるときには左辺に変数名右辺にデータの内容を記載します。

(例)住所の変数「strAddress」に住所を入れる場合

strAddress = “東京都品川区〇〇〇町ー△△△ーXXX”

変数のデータ内容を取得する

変数に入れたデータの内容を取得する場合は対象を左辺変数名を右辺に記載します。

(例)A1セルに変数「strAddress」を入れる場合

Range(“A1”).Value = strAddress

また先ほどのサッカー少年を例にして見てみます。

soccer-boy-profile

次のExcelに生年月日、年齢、住所、趣味をそれぞれ変数に入れ、Excel上に記載するVBAを記載してみます。

before-profile-input

このExcelに値を入れるマクロは次のようになります。

set-profile

まず、変数にデータ内容を入れる部分はVBAでは次のように記載します。

dteBirthDay = “2010/7/23”
intAge = 11
strAddress = “東京都品川区〇〇〇町ー△△△ーXXX”””
strHobby = “サッカー”

次に、セルに変数の内容を記載する部分はVBAでは次のように記載します。

Range(“B1”) = dteBirthDay
Range(“B2”) = intAge
Range(“B3”) = strAddress
Range(“B4”) = strHobby
このマクロを実行すると次の結果になります。
 

after-profile-input

天馬先生
天馬先生

このように変数に入れたデータを用いてExcel上にデータの内容を記載することが出来るよ。

さらに、if文と変数を組み合わせて条件式を作成する事が出来ます。

一度の講座では長くなってしまうため、今回の講座では変数の使い方の基礎編という事で、ここまでの解説にします。

if文との組み合わせ方法については次回の講座で解説します。

まとめ

今回の講座では変数(DIM)の使い方について解説しました。

少しボリュームが多くなってしまいましたが、変数はマクロを作成するうえで必須のスキルです。

今回の講座では基礎部分を解説しました。

If文などとの組み合わせで更に複雑な処理を作成することも可能です。

より詳しい使い方については次回以降の講座で解説します。

最後までお読みいただき、ありがとうございました!

~天然マクロ学校~

コメント

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