01-VBA

ExcelVBAの変数 (Part.1) 基本編 | 現役エンジニア&プログラミングスクール講師

目的

VBAの変数について理解する

VBAの変数の概要と利用方法

変数ってなんだ?(概要)

「変数」は、「プログラミングで利用する値やオブジェクト」を呼び出すための「名前」です。変数は呼び出す値やオブジェクトへの結びつきを変更する(値を入れ替える)ことができます。

似たようなものに「定数」がありますが、「定数」は呼び出すものを変更できません。このため決まった値のための「名前」として利用されます。

変数は値を呼び出すための「名前」です。書籍などでは、よく「箱」に例えられ、「数字の入る箱」や「文字の入る箱」として説明されますが、「箱」という表現は単なる学習のためのイメージです。

変数はプログラムの中で利用しながら学習すると段々と、その存在意義など含めて理解が進みます。反対に変数単体で学習すると頭に「?」が沢山浮かぶだけなので、ここでは学習と割り切って「変数の使い方を知る!」「変数で利用する型の種類を知る!」ことに集中しましょう。

変数の使い方

手順

  1. 宣言
  2. 名前をつける
  3. 型を指定する

❶「宣言」

Dim と書けば変数の利用を宣言することができます。

Dim:Dimステートメントといって、変数の名前と型を指定する時に利用します。Dimに続けて「変数の名前」を指定できます。次に「型」を指定します。型の指定にはAsを用います。

❷「名前」をつける

Dimと宣言をしたら、次は変数の名前を指定します。名前付けにはルールがありますが、基本的に自由に指定できます。

  • 変数名の最初の一文字目は「文字」を使用する
  • スペースは利用できない(文字と文字の間を開けない)
  • 長さは半角英数字で255文字まで(2文字目以降で数字とアンダースコアが利用可能)
  • Excelで使用されている関数やVBAで利用されているメソッドや構文等の単語は変数名に利用できない

下の図の赤枠は上のリストにあるルールからNGになる例です。

❸型を指定する

名前を指定したら、次は「データ型」を指定します。「データ型」の指定には「As」を使用します。「データ型」はデータの種類のことで次のものがあります。

扱う方の種類大きさデータ型
整数を扱うもの小(1バイト)=(0~255)Byte
中(2バイト)=(-32,768~32767)Integer
大(4バイト)
=(-2,147,483,648~2,147,483,647)
Long
浮動小数を扱うもの小(4バイト)Single
大(8バイト)Double
通貨を扱うもの(8バイト)Currency
日付を扱うもの(8バイト)Date
文字列を扱うもの(文字列の長さ分)String
真偽値を扱うもの(2バイト)Boolean
オブジェクトを扱うもの(4バイト)Object
何でも入る型を扱うもの(数値:16バイト)
(文字列:文字列の長さ分)
Variant
図1:データ型の種類

上図について

  • バイト数は覚える必要はありませんが大小関係は把握しておくと便利です
  • 数値の範囲は覚える必要はありませんが大体の数を把握しておくと便利です

変数を利用する場合、変数が扱うデータについて「型」と「長さ」を考える必要があります。例えば、家計簿のようなプログラムを考えたときInteger型を使用すると、Integer型は32,767までの数字しか扱えないので、それ以上の額を扱えないということが起こります。この場合はLong型やCurrency型を利用することになります。

企業の事務処理など何億もの数字を扱うような場合は、それなりの型を使って対応する必要があるのでCurrency型を利用するのが良いです。

変数宣言時に型を指定しなかった場合はバリアント型というデータ型となります。(例:Dim sample  ← Variant型)

オブジェクト型は変数宣言以外にSetステートメントを利用した代入を行う必要があります。

バリアント型については変数の型が決まっていないものに対して使用します。

オブジェクト型や、表にない固有オブジェクト型については「ExcelVBAの変数 Part.2」で取り上げています。

変数宣言を強制させる

宣言をしない変数の利用

変数はDimを使って宣言をしなくても利用ができます。しかし変数がどの型を利用しているか、分かりづらくなってしまいます。

変数の型の確認

プログラミング言語には基本的に型を調べる関数が準備されています。VBAでは変数の型を確認する方法としてVarType関数があります。

サンプルプロシージャ1

Sub variablePra()

    varSample1 = "samlpe"
    MsgBox VarType(varSample1)

    varSample2 = 555
    MsgBox VarType(varSample2)

    MsgBox VarType(varSample3)
    
End Sub

VarType関数は変数の型を返してくれる関数です。

利用方法:VarType(変数名)

実行結果

varSample1の型は「8」(String型)となっています。

varSample2の型は「2」(Integer型)となっています。

varSample3の型は「0」(Variant型)となっています。

変数を宣言しない(型を指定していない)場合はVariant型となります。

上で示した「図1:データ型の種類」のすべての値を確認すると以下のようになります。

サンプルプロシージャ2

Sub variablePra2()
    Dim Type_byte As Byte
    Dim Type_integer As Integer
    Dim Type_long As Long
    Dim Type_single As Single
    Dim Type_double As Double
    Dim Type_currency As Currency
    Dim Type_date As Date
    Dim Type_string As String
    Dim Type_boolean As Boolean
    Dim Type_object As Object
    Dim Type_variant As Variant
    
    MsgBox "Type_byte:" & Chr(9) & VarType(Type_byte) & Chr(10) & _
         "Type_integer:" & Chr(9) & VarType(Type_integer) & Chr(10) & _
         "Type_long:" & Chr(9) & VarType(Type_long) & Chr(10) & _
         "Type_single:" & Chr(9) & VarType(Type_single) & Chr(10) & _
         "Type_double:" & Chr(9) & VarType(Type_double) & Chr(10) & _
         "Type_currency:" & Chr(9) & VarType(Type_currency) & Chr(10) & _
         "Type_date:" & Chr(9) & VarType(Type_date) & Chr(10) & _
         "Type_string:" & Chr(9) & VarType(Type_string) & Chr(10) & _
         "Type_boolean:" & Chr(9) & VarType(Type_boolean) & Chr(10) & _
         "Type_object:" & Chr(9) & VarType(Type_object) & Chr(10) & _
         "Type_variant:" & Chr(9) & VarType(Type_variant) & Chr(10)
    
End Sub

実行結果

宣言の強制

プログラムを行う前に宣言を強制させる設定がVBAにはあります。強制させることで無駄な変数が作成されるデメリットをなくせたり、管理がしやすくなります。

設定方法

「ツール」の「オプション」を選択

ダイアログボックスにある「変数の宣言を強制する」にチェックを入れます。

これで変数の宣言を強制することができます。

新しい「標準モジュール」を作成して確認してみます。

新しく作成したModule4に「Option Explicit」と記述されています。これが変数の利用時に宣言を強制する設定となります。

試しに宣言無しで変数を利用してみます。

この記事で最初に利用した変数宣言なしのプログラムを、宣言の強制を設定したモジュールで利用してみます。

実行結果はコンパイルエラーとなります。これで変数の宣言が必要になったことが分かります。

今回は以上となります。

初心者も実践で通用!「VBA・VBS」おすすめ書籍5選 | 現役エンジニア&プログラミングスクール講師「VBA・VBS」初心者の方が実践業務の中でそれらを活用しt活躍できるために必要な知識を習得できる書籍を紹介しています。ページの下部には「おすすめのITスクール情報」「おすすめ求人サイト」について情報を掲載中。...

ブックマークのすすめ

「ほわほわぶろぐ」を常に検索するのが面倒だという方はブックマークをお勧めします。ブックマークの設定は別記事にて掲載しています。

「お気に入り」の登録・削除方法【Google Chrome / Microsoft Edge】| 現役エンジニア&プログラミングスクール講師「お気に入り」の登録・削除方法【Google Chrome / Microsoft Edge】について解説している記事です。削除方法も掲載しています。...
【パソコン選び】失敗しないための重要ポイント | 現役エンジニア&プログラミングスクール講師【パソコン選び】失敗しないための重要ポイントについての記事です。パソコンのタイプと購入時に検討すべき点・家電量販店で見かけるCPUの見方・購入者が必要とするメモリ容量・HDDとSSDについて・ディスプレイの種類・バッテリーの持ち時間や保証・Officeソフト・ウィルス対策ソフトについて書いています。...
RELATED POST
01-VBA

制御構文|Excel VBA (Part.8)【For Each In Next】| 現役エンジニア&プログラミングスクール講師

2022年11月29日
プログラミング学習 おすすめ書籍情報発信 パソコン初心者 エンジニア希望者 新人エンジニア IT業界への就職・転職希望者 サポートサイト Programming learning Recommended schools Recommended books Information dissemination Computer beginners Prospective engineers New engineers Prospective job seekers in the IT industry Support site
01-VBA

印刷機能|Excel VBA (Part.1)【PageSetupプロパティ/PrintPreviewメソッド/PrintOutメソッド】編 | 現役エンジニア&プログラミングスクール講師

2022年12月5日
プログラミング学習 おすすめ書籍情報発信 パソコン初心者 エンジニア希望者 新人エンジニア IT業界への就職・転職希望者 サポートサイト Programming learning Recommended schools Recommended books Information dissemination Computer beginners Prospective engineers New engineers Prospective job seekers in the IT industry Support site
01-VBA

Excel VBA の「デバッグ」(Part.1)「自動構文チェック機能」「VBAProjectのコンパイル」「プロシージャ実行時エラー」| 現役エンジニア&プログラミングスクール講師

2022年12月14日
プログラミング学習 おすすめ書籍情報発信 パソコン初心者 エンジニア希望者 新人エンジニア IT業界への就職・転職希望者 サポートサイト Programming learning Recommended schools Recommended books Information dissemination Computer beginners Prospective engineers New engineers Prospective job seekers in the IT industry Support site
01-VBA

ExcelVBAのEndプロパティ(2)| 現役エンジニア&プログラミングスクール講師

2022年8月24日
プログラミング学習 おすすめ書籍情報発信 パソコン初心者 エンジニア希望者 新人エンジニア IT業界への就職・転職希望者 サポートサイト Programming learning Recommended schools Recommended books Information dissemination Computer beginners Prospective engineers New engineers Prospective job seekers in the IT industry Support site
01-VBA

ExcelVBAのActiveCellプロパティ | 現役エンジニア&プログラミングスクール講師

2022年8月15日
プログラミング学習 おすすめ書籍情報発信 パソコン初心者 エンジニア希望者 新人エンジニア IT業界への就職・転職希望者 サポートサイト Programming learning Recommended schools Recommended books Information dissemination Computer beginners Prospective engineers New engineers Prospective job seekers in the IT industry Support site
01-VBA

Excel VBA の 配列(サンプルプロシージャの利用)| 現役エンジニア&プログラミングスクール講師

2022年12月25日
プログラミング学習 おすすめ書籍情報発信 パソコン初心者 エンジニア希望者 新人エンジニア IT業界への就職・転職希望者 サポートサイト Programming learning Recommended schools Recommended books Information dissemination Computer beginners Prospective engineers New engineers Prospective job seekers in the IT industry Support site