変数

変数とデータ型

 プログラミングの勉強を開始したころ、イメージしにくいものの一つに「変数」があります。

数学の方程式では「変数(XとかY)は特定の数を表していない、変わりうる数を表すもの」となります。
しかしここでの「変数」はこれとは異なります。

プログラミングの「変数」とは「入物」とイメージするとわかりやすいです。
ただ「入物」といっても、お金を入れる金庫も入物ですし、昆虫採集の虫かごも入物です。

 プログラミング上の「変数」という入物は、数字を入れる変数、名前や住所といった文字を入れる変数、日付を入れる変数などいろいろです。

そこで
「この変数は何を入れるための変数なのか」
ということをあらかじめ宣言しておくことを求められます。

つまり入れる物(データ)の種類(タイプ)をデータ型といいます。

データ型

データ型の種類は下記のように分類されます。

   名  称 データ型    値 の 範 囲
整数型 Integer -32,768から32,767の整数
長整数型 Long -2,147,483,648から2,147,483,647の整数
文字列型 String 文字列
通貨型 Currency -922,337,203,685,477.5808から922,337,203,685,477.5807
日付型 Date 西暦100 年1月1日~西暦9999年12月31日までの日付と時刻
単精度浮動小数点型 Single -3.402823E38から-1.401298E-45
1.401298E-45から3.402823E38
倍精度浮動小数点型 Double -1.79769313486231E308から-4.94065645841247E-324
4.94065645841247E-324から1.79769313486232E308
ブール型 Boolean True または False
バイト型 Byte 0から255の正の整数
オブジェクト型 Object オブジェクト参照するデータ型
バリアント型 Variant 全てのデータ

何やら難しそうな表です。
最初のうちは全部覚えなくても大丈夫です。

最初に覚えてほしいのは次の4つです。

Long ・・・・・数字(整数)
Double ・・・・数字(小数点のある数字)
String  ・・・・文字
Date ・・・・・日付

最初のうちはこの4つのデータ型で宣言するようにしてください。

‘ nenrei を数字として宣言 
  Dim nenrei as long

‘ ens を数字(小数点のある数字)として宣言
  Dim en as Double

‘ namae を文字として宣言
Dim namae as String

‘ birth を日付として宣言
Dim birth as Date

このほかVBA では便利な Variant というデータ型があります。
トランプでいうジョーカーみたいなもので、何でも入れることにできるデータ型です。

変数の宣言

プログラミングするとき「変数」は自分でわかりやすいものに決めることができます。
変数が決まれば、あとはその変数がどんな型のデータをいれるものか 宣言しなければなりません。

Dim 変数名 As データ型

と書きます。
つまり Dim による変数宣言です。

たとえば
商品単価を入れる(表す)変数を p とすれば

Dim p As Long

と書きます。
単価は整数の数字ですから Long となります。

Dim p

とだけ書いて、 As 以下を書かないこともできます。
これは何にでも使えるジョーカーみたいな Variant 型になります。

また i、m、sk と3つの変数を「文字」を入れる変数として宣言したい場合は

   Dim i As String
   Dim m As String
   Dim sk As String     

と3行に分けて書きますが、

 Dim i As String,m As String,sk As String    

とカンマで区切ってまとめて書くこともできます。

数字を入れるべき変数に、文字を入れた場合です。

’ 変数Pを数字として宣言
Dim P As Long

‘ 変数pに 間違えて「田中太郎」 という文字を入れた
P = “田中太郎”

‘ B5のセルに変数Pを書き出す命令
Range(“B5”) = P   

実行したら

エラーメッセージが表示されました。

当然間違いですよね。
数字として入るべき変数に文字が入ったわけですから。

これを

’ 変数PをVariant(何でも使えるジョーカー)として宣言
Dim P

‘ 変数に 田中太郎 という文字を入れた
P = “田中太郎” 

‘ B5のセルに変数Pを書き出す命令
Range(“B5”) = P   

とすれば、エラーが出ることなく B5に ”田中太郎” と表示されます。

一見正解のように思われます。
しかし本来「年齢」を入れる変数Pに、誤って「名前」を入力してしまったわけです。
※ 数字を入れるべき変数に文字をいれてしまった。

誤りが誤りとして表に出ない結果になります。

こうしたことから、Dim宣言をしないとか、安易にVariant型を使うということはおすすめできません。
面倒と思われるかもしれませんが、最初からきちんと宣言するようにしてください。
かえって間違いがそれだけ少なくなり、かえって効率的です。

環境初期設定のところで、設定することをお願いしました

Option Explicit

の意味がこれでお分かりになられたでしょう。

もうすでにあなたのExcelは、標準モジュールの先頭に自動挿入されているはずです。

これがあるということは、
「変数は必ず宣言して使用する」
と Excel と約束したことになります。

もし宣言を忘れて変数を使用しようとしたらエラーとなります。

変数の決まり事

 変数の宣言のところで、「変数」は自分でわかりやすいものに決めればいいと申しましたが、無制限に何でも良いというわけではありません。

次のような決まりがあります。

  • 変数名の長さは半角255文字以内、全角なら127文字以内
  • 記号はアンダーバー(_)のみ使用可(ピリオド、スペースは不可)
  • 最初の文字に数字、アンダーバーは使用できない
  • VBAで関数用語など意味ある語句(予約語)は変数にできない
  • 大文字、小文字の区別はできない(同様に扱われる)

今後経験を重ねるごとにわかってきます。
また自分なりの変数の決め方が自然にできてきます。

とにかく変数は自分にとってわかりやすい名前を付けることがベストです。
例えば 私の場合「回数」を表す変数は「ct 」(Countの略)みたいに。
複数必要な場合は「ct1」「ct2」「ct3」・・と決めています。

あなたなりの変数が決まるころは、かなりVBAのスキルは上がっているはずです。

まとめ

1. 最初は使う変数の型は「Long」「Double」「String」「Date」で大丈夫です。
  少しづつレパートリーを増やしていってください。
   「Integer」「Single」「Currency」「Boolean」「Object」が次の段階です。

2. 変数の宣言は必ず行うことが肝要です。
  Option Explicit に沿って必ず変数宣言は行ってください。

3. 変数名は自由ですが、最低限の禁止事項がありますので注意してください。

4. 変数名は自分にとってわかりやすいものにしてください。
  後々マクロを作る際の作業効率も上がります。
  また自分流の変数が自然に出来上がるまで、マクロ製作をやり込んでください。