変数とは何か?【VBAにおける変数】

Excel VBA

本格的にプログラムを作るにあたって、まずプログラムの基本となる、変数についてご説明したいと思います。

変数とは

まず変数とは、大雑把に容器をイメージしてください。 容器は入れる中身によって形が変わりますよね? 入れたい中身を想定して、先にどんな容器を用意するかを決めることになります。

変数の型

変数という容器を、宣言という形で用意します。

さしあたって、宣言の形式を記述します

Dim 変数名 As 型

となります。 「Dim」とは英語の、「Dimension」の略形になります。 英語の「Dimension」には、次元という意味もありますが、他にも寸法や容積といった意味もあります。 「As」以降に書く型で容器を作るよ、といった意味になります。

変数名はどのような名前をつけても問題ないのですが、基本的にプログラム作成者自身が、後で見てわかりやすい名称をつけます。

そして型は、どのような中身を入れたいかで変えていきます。 この中身のことを、「値」といいます。 格納したい「値」がどのような物かで、型を決めることになります。

それでは、よく使う型を挙げてみたいと思います。

  • Integer
    • 整数型。 具体的には、-32,768から32,767の整数です。 小数点以下の数値は格納できません。 
  • Long
    • 長整数型。 整数型を、単純に大きくした物になります。 -21億から21億までの数値が格納できます。 整数型と同様に、小数点以下の数値は格納できません。
  • Currency
    • 通貨型。 -900兆から900兆までの数値を格納できます。 小数点以下は、3桁まで格納できます。
  • String
    • 文字列型。 文字列を格納できます。
  • Date
    • 日付型。 西暦100年1月1日から西暦9,999年12月31日まで、時刻付きで格納できます。
  • Boolean
    • ブール型。 TrueとFalseだけが格納できる、フラグ管理用の型です。

他にもいくつかの型がありますが、このブログでは扱わないため、ご紹介は省かせて頂きます。

それでは上記の型を使って、変数の宣言を記述してみます。

Dim ii As Integer   '「ii」という名前の、整数型の変数
Dim LL As Long     '「LL」という名前の、長整数型の変数
Dim お金 As Currency '「お金」という名前の、通貨型の変数
Dim ss As String     '「ss」という名前の、文字列型の変数
Dim Jikan As Date    '「dd」という名前の、日付型の変数
Dim Bol As Boolean   '「Bol」という名前の、ブール型の変数

変数はこのように宣言して作ります。 変数名には日本語の名前をつけることもできますので、どういった用途で使うかをイメージして宣言する方が、後で見直した時にわかりやすくなります。 単純に文字数が少ない方がプログラムを書く時間が省けますので、短くてわかりやすい変数名がベストですね。

ステートメントとは

また「Dim」や「As」といった、プログラムを書く上での決まった命令文のことを、「ステートメント」という言い方をします。 「Dimステートメント」という言い方をすると、「Dim」を使った構文を指すことになります。 各ステートメントにはそれぞれ形式が決まっており、「Dimステートメント」の場合は上記の構文ということですね。

変数の自動生成を停止する

VBAでは変数を宣言せずとも、自動で変数を生成する機能があります。 具体的には、プログラム内で宣言がされていない文字列を、全て変数として扱う機能です。 この機能は便利ではあるのですが、後々混乱を招く元になります。 そのため、このブログ内では必ず変数は宣言するものとします。 デフォルトで使えるようになっていることもあるため、この機能を停止しておくことを強くオススメします。

スクリーンショットの画面  自動的に生成された説明

VBEの上部メニューのツールからオプションをクリックし、オプションウインドウを開きます。 ここで「変数の宣言を強制する」にチェックが入っていれば、変数の自動生成はされません。

変数のスコープ

変数は一度宣言したら、どこでも使えるものではありません。 変数には宣言した場所によって使える範囲が決まります。 この変数の使える範囲のことを、「変数のスコープ」という言い方をします。 英語で書くと「Scope」となり、和訳すると「範囲、視野」となります。 すぐに使う知識ではないのですが、ここではマメ知識程度に覚えてください。

ローカル変数

プロシージャという、機能の中でのみ使える変数です。 プロシージャ内で宣言された変数はローカル変数となり、そのプロシージャの中でのみ使うことができます。

スクリーンショットの画面  自動的に生成された説明

上のプロシージャと下のプロシージャの中に、同名の「jj」という変数が宣言されています。 ですがこの2つの「jj」は別々のプロシージャにあるローカル変数のため、別物として扱われます。

グローバル変数

プロシージャの外側で独立して宣言する変数を、グローバル変数と言います。 ここで宣言された変数は、このモジュール内ならどこでも使うことができます。

スクリーンショットの画面  自動的に生成された説明

中央の赤丸内のように、モジュール内の冒頭部に独立して宣言することで、グローバル変数となります。 「Private」で宣言してもグローバル変数となりますが、プロシージャから独立させて「Dim」で宣言することでもグローバル変数となります。 このグローバル変数は、宣言されたモジュール内ならどこでも使うことができます。 

パブリック変数

パブリック変数として宣言された変数は、プロジェクト内でしたらどこからでも使うことができます。 ですが、個人レベルでの作業のマクロ化では、まず使われません。 参考程度にとどめておいてください。

スクリーンショットの画面  自動的に生成された説明

パブリック変数はグローバル変数と同様に、モジュールの冒頭に独立させて宣言します。 「Dim」や「Private」の代わりに、「Public」で宣言することでパブリック変数となります。 このパブリック変数は左の赤丸のように、プロジェクト内全ての場所から使うことができます。 

今回のまとめ

  • 変数は名前と型をセットで宣言する
  • 変数の種類によって使える範囲が決まっている

この変数のせいで、数多のプログラム初心者が挫折したことでしょう。 ですが変数を使うことは、プログラムを作る上では避けて通れないものです。 また、変数を上手く扱うことで、シンプルな良いプログラムを作ることができます。 色々試しながら、上手に変数を扱えるよう学んでいきましょう。

次回は変数の具体的な使い方をご説明したいと思います。

コメント

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