01-VBA

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

目的

VBAの変数について理解して利用できる。

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

変数の概要

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

※ 似たようなものに「定数」がありますが、「定数」は呼び出すものを変更できません。

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

変数の利用方法

変数は次のように記述することで利用できます。

Dim 変数名 As 型

手順としては次のように分けることができます。

  1. 変数の利用を宣言(Dimキーワード)
  2. 名前をつける
  3. 型を指定する(Asの記述後)

❶「宣言」

変数の宣言には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型を利用するのが良いです。

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

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

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

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

変数宣言を強制させる

宣言をしない変数の利用

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

変数の型の確認

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

サンプルプロシージャ1

Sub variablePra()

    varSample1 = "sample"
    varSample2 = 555
    
    MsgBox VarType(varSample1)
    
    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.3)「フォームコントロール」「ActiveX コントロール」| 現役エンジニア&プログラミングスクール講師

2022年12月30日
プログラミング学習 おすすめ書籍情報発信 パソコン初心者 エンジニア希望者 新人エンジニア 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月12日
プログラミング学習 おすすめ書籍情報発信 パソコン初心者 エンジニア希望者 新人エンジニア 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)3つのプロシージャ /引数のByVal(値渡し)とByRef(参照渡し)| 現役エンジニア&プログラミングスクール講師

2022年12月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.3)【InputBox+AutoFilter】編 | 現役エンジニア&プログラミングスクール講師

2022年12月4日
プログラミング学習 おすすめ書籍情報発信 パソコン初心者 エンジニア希望者 新人エンジニア 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:「モジュールとプロシージャ」+マクロブックの保存方法

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