ExcelマクロVBA入門
第12回.変数とデータ型(Dim)

ExcelマクロVBAの基本と応用、エクセルVBAの初級・初心者向け解説
最終更新日:2019-08-20

第12回.変数とデータ型(Dim)


マクロVBA入門者が、まず最初につまずくのが、この変数でしょう、
変数とは、数値や文字列など(すなわちデータ)を一時的に格納する入れ物
と良く説明されますが、まずはこの考えで良いでしょう。


この入れ物には、いろいろなタイプの入れ物があります。
まあ、ザルもあれば、ダンボールもあれば、バケツもあればって事ですね。
当然、水をいれるなら、バケツですよね、
ザルに、水は入れられませんし、ダンボールにいれたら破けてしまいます。

同様に、変数にも、そのタイプによって、
入れられるものと、入れられないものがあります。
この入れ物(データ)のタイプ(型)を、データ型と言います。

データ型

データ型 名称 格納できる範囲
Integer 整数型 -32,768 ~ 32,767
Long 長整数型 -2,147,483,648 ~ 2,147,483,647
Single 単精度浮動小数点数型 -3.402823E38 ~ -1.401298E-45(負の値)
1.401298E-45 ~ 3.402823E38(正の値)
Double 倍精度浮動小数点数型 -1.79769313486232E308 ~ -4.94065645841247E-324(負の値)
4.94065645841247E-324 ~ 1.79769313486232E308(正の値)
Currency 通貨型 -922,337,203,685,477.5808 ~ 922,337,203,685,477.00
String 文字列型 最大約20億文字まで
Date 日付型 西暦100 年1月1日~西暦9999年12月31日までの日付と時刻
Byte バイト型 0~255の範囲の単精度の正の数値。8 ビット(1 バイト)
Boolean ブール型 真 (True) または偽 (False)
Object オブジェクト型 オブジェクト
Variant バリアント型 すべてのデータ

※これで全部ではありません。まだまだありますが、上記はよく使われるものだけです。
BooleanまではVBAの基本型(プリミティブ型)になります。

まあ、今はまだ全部を覚えなくても良いです。
最初に覚えるとしたら、

整数は、Long
少数は、Double
文字は、String

まずは、これくらいを覚えておけば十分でしょう。
マクロ(VBA)では、非常に便利なものがあって、
上記の表の一番下の、Variantは何でも入れる事が出来ます


そして、データ型を指定しないと、Variantになります。
つまり、データ型を指定しなければ、それで良いと言う事になります。
データ型は、もう少しマクロが上達してから覚えても遅くありません。
とはいえ、上に書いた、Long,Double,Stringくらいは覚えておきましょう。

変数の使い方

変数は宣言する
と言う言い方をします。
Dim 変数名 [As データ型]
これが宣言です。
[As データ型]の部分は、省略可能という意味です。
省略すれば、前記のVariant型になって、何でも入れる事が出来ます

ちなみに、Dimはdimensionの略ですが、その説明は割愛します、
興味のある人は、ネットで調べてみて下さい。

また、変数名は、1行に複数書く事が出来ます。
Dim 変数名 [As データ型], 変数名 [As データ型], ・・・
のように、,(カンマ)で区切って、複数の変数を1行に書く事が出来ます。

変数名の規則

・半角、全角の数字と文字を使えます
・変数名の長さは、半角で255文字以内(全角なら127文字以内)です。
・記号はアンダーバーのみ使用可能(ピリオドやスペースは使用できない
・1文字目は、数字、アンダーバー、記号を使用することができない
・VBAが意味を持たせている語句は使用できない
・大文字、小文字の区別がなく、同様に扱われる。


以上は最低限の決まりですが、これは普通に書けば大抵は問題ありません。


・VBAのステートメント、オブジェクト、プロパティ、メソッドは使用しない。
・なるべく入れるデータが容易に想像できる名称にする。

これらについては、今後学ぶものですので、今はそのようなものがあるのだと言う程度で構いません。

良く使われる変数名

変数名は慣習的に良く使われる命名があります。

Dim i, j, k

これらは、数値のみを扱い、かつ、行数のカウント等の場合に使用されることが多いです。

行数のカウントに使う変数は、このようにi,jで構いませんが、
その他の変数は、
使用目的がわかるような意味のある変数名を指定するようにしましょう。

また、データ型の略文字を先頭に付ける事も多く用いられます。

Dim intNo As Integer

これは、整数型のIntegerの略であるintを頭につけて、何かの整数の番号を入れる変数です。
と宣言している訳です。
このような変数名の付け方は、ハンガリアン記法と呼ばれます。
ハンガリアン記法については、昨今は批判的な意見もありますが、
VBAは古いプログラミング言語なので、新しい言語と同列に語るべきではありません。
特段にハンガリアン記法を進めるわけではありませんが、
基本的な命名方法として、必ず覚えておくべき記法になります。
先の変数名の規則にもあったように、全角の日本語も使用できます。

Dim lng行 As Long

これは、長整数型で、行番号を入れますよと宣言していますね。
日本語の変数名に関しては賛否両論あるようですが、
現在のPC事情(ハード、ソフト両面での)を考えた時、
日本語の変数名の是非を論ずる事自体が無意味です。

解り易ければ、それが一番良いのです。
それ以上でも、それ以下でもありません。

最初のうちは、書籍やネットで見かける変数を真似していけばよいでしょう。
少しずつ、自分でつけたい変数名が出来てくるものです。

変数宣言の必要性

変数はかならず宣言しましょう。

VBEのオプションで、「変数の宣言を強制する」にチェックを付けました。
マクロを書き始める前に、ちょっと設定しておいた方が良いオプションがあります。いえ、絶対に設定しておかなければならないVBEのオプション設定です、必ず、最初に設定しておいてください。VBEの「ツール」→「オプション」以下の画面が出ます。
これにチェックを付けた以降に標準モジュール挿入すると、

Option Explicit

これが、標準モジュールの先頭に自動的に挿入されるようになります。
これは、変数は必ず宣言してから使います。
とエクセルに伝えたことになります。

これにより、変数を宣言しないで、いきなり使い始めると、
「変数宣言すると言ったのに、宣言してないぞー」
と、エクセルが怒ります。
エクセルに怒られないように、変数は必ず宣言して下さい。


変数は非常に奥深く、プログラミングの要点ともいえるものです。
少しずつじっくりと覚えて行って、
ご自身で書きやすく読みやすい変数名を使えるようになってください。




同じテーマ「マクロVBA入門」の記事

第9回.Rangeでのセルの指定方法
第10回.Range以外の指定方法(Cells,Rows,Columns)
第11回.RangeとCellsの使い方
第12回.変数とデータ型(Dim)
第13回.定数と型宣言文字(Const)
第14回.文字の結合(&アンパサンド)と継続行(_アンダーバー)
第15回.四則演算と注釈(コメント)
第16回.繰り返し処理(For Next)
第17回.繰り返し処理(Do Loop)
第18回.最終行の取得(End,Rows.Count)
第19回.総合練習問題1


新着記事NEW ・・・新着記事一覧を見る

VBAクラスのAttributeについて(既定メンバーとFor Each)|VBA技術解説(10月19日)
VBAの用語について:ステートメントとは|VBA技術解説(10月16日)
VBAのマルチステートメント(複数のステートメントを同じ行に)|VBA技術解説(10月14日)
VBAコードの全プロシージャー・プロパィ一覧を取得|VBAサンプル集(10月12日)
VBAでエラー行位置(行番号)を取得できるErl関数|VBA技術解説(10月11日)
手動計算時の注意点と再計算方法|ExcelマクロVBA技術解説(10月9日)
引数の数を可変にできるパラメーター配列(ParamArray)|VBA入門(10月7日)
VBEの使い方:デバッグ|ExcelマクロVBA入門(10月6日)
VBAにおける配列やコレクションの起点について|VBA技術解説(10月5日)
VBEの使い方:オブジェクト ブラウザー|VBA入門(10月5日)


アクセスランキング ・・・ ランキング一覧を見る

1.最終行の取得(End,Rows.Count)|VBA入門
2.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
3.RangeとCellsの使い方|ExcelマクロVBA入門
4.Range以外の指定方法(Cells,Rows,Columns)|VBA入門
5.変数とデータ型(Dim)|ExcelマクロVBA入門
6.繰り返し処理(For Next)|ExcelマクロVBA入門
7.マクロって何?VBAって何?|ExcelマクロVBA入門
8.ひらがな⇔カタカナの変換|エクセル基本操作
9.空白セルを正しく判定する方法(IsEmpty,IsError,HasFormula)|VBA技術解説
10.セルに文字を入れるとは(Range,Value)|VBA入門



  • >
  • >
  • >
  • 変数とデータ型(Dim)

  • このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。


    記述には細心の注意をしたつもりですが、
    間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
    なお、掲載のVBAコードは自己責任で使ってください。万一データ破損等の損害が発生しても責任は負いません。




    このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。
    本文下部へ