ExcelVBAの変数について。変数の使い方について解説

Excel
この記事は約7分で読めます。

変数は値を入れるための箱です。何度も登場させたい文字や数字に関しては1つの箱(変数)に入れて、わかりやすい名前を付けて使いまわすことができます。

 

変数の使い方

Dim 変数名
変数名 = 値

まず[Dim 変数名]で変数に名前を付けて、使う前の宣言をします。

その後の[変数名 = 値]で変数に値を格納して使用します。

 

下の例文では、[あいさつ]という変数名を宣言し、「こんにちは」という値を入れて、メッセージボックスで表示させています。

エディターを開き、以下のコードを書いてみましょう。

Dim あいさつ
あいさつ = “こんにちは”

MsgBox あいさつ

実行(F5)すると、メッセージボックスで以下のような結果が表示されます。

Visual Basic Editorの開き方や使用方法についてはこちらにあります↓

VBAとは?マクロとの違いやVBA初期導入まで
VBA(Visual Basic for Applications)は、ExcelやWord、Accessといった、Microsoft Officeで使用するプログラミング言語です。 VBAはExcel内のデータ集計や、分析、SUMやAVE...

 

データ型について

大きなシステムをVBAで作る場合や、複数人で作ったVBAを管理していく場合には、変数宣言時にデータの形式を指定する必要があります。

変数にデータの形式を指定しておくと、処理速度が速くなったり、エラー時の原因がわかる場合があるからです。

 

データの形式を「データ型」とか「型」といいます。型を指定する場合は、変数宣言のときに以下のように書きます。

Dim 変数名 型

 

よく使うデータ型

文字列型 String

Dim もじ As String
もじ = “こんにちは”

格納する文字列は、“”(ダブルクォーテーション)で囲います。

 

整数型(-32,768 ~ 32,767) Integer

Dim すうじ As Integer
すうじ = 12345

Integerは小さい範囲の整数を格納する場合に使用します。

 

長数型(-2,147,483,648 ~ 2,147,483,647) Long

Dim すうじ As Long
すうじ = 1234567890

Longは大きい範囲の整数を格納する場合に使用します。

数値型はIntegerとLongの2つがありますが、事務作業ではIntegerの範囲(-32,768 ~ 32,767) では足りないと思うので、Longを使っていれば間違いないです。

 

日付型 Date

Dim ひづけ As Date
ひづけ = “2024/01/15”

文字列と同じく“”(ダブルクォーテーション)で囲います。

 

ブール型(真 (True) または偽 (False)) Boolean

Dim ふらぐ As Boolean
ふらぐ = True

If文の条件判定の結果に応じて、if文の外で判定の結果を使用したいときなどに便利です。以下が例です。

If文を抜けた後に判定結果を使用する例
Dim あいさつ As String
あいさつ = "おはよう"

Dim あさ As Boolean

If あいさつ = "おはよう" Then

 あさ = True

ElseIf あいさつ = "こんにちは" Then

 あさ = False

End If

MsgBox "結果は【" & あさ & "】です。"

 

型を使用するときのNG例

型を宣言すると、その型のデータしか入れることができず、違う型のデータを入れた場合はエラーとなります。

‘これはOK
Dim 数字 As Long

数字 = 12345



'これはエラー

Dim 数字 As Long

数字 = "おはよう"

 

便利なバリアント型について

VBAには便利なバリアント型というものが存在します。

Dim 変数名 as Variant

バリアント型で宣言しておけば、どんな型のデータでも入れることができる便利な型です。

しかも、変数宣言時には型を省略することができます。

Dim 変数名

以下のように数字も文字列もエラー無く格納できます。

ただし、大きなシステムをVBAで作るときや、複数人で作成したVBAを管理していく場合には、変数宣言時にちゃんと型指定をした方が良いです。

 

これはVBAをたくさん書いていく中でわかってくると思うので、自分の仕事をすぐに効率化したいという場合には、型を意識せずにバリアント型を使って大丈夫です。

 

補足

変数には、上記でお伝えした[データ]を格納する以外に、[オブジェクト]の格納にも使えます。

[オブジェクト]とは、操作対象のことです。Excelではセルやボタンやシートなどがオブジェクトにあたります。オブジェクトは[モノ]と解釈しても良いです。

オブジェクトについて詳しくはこちらにあります↓
VBAのオブジェクトとは?オブジェクト、プロパティ、メソッドの使い方

https://devoevo.com/vba-object/

[オブジェクト]に使う場合は、変数を初期化するときに[Set]を付ける必要があります。

’シートを変数に格納
Dim シート

Set シート = ThisWorkbook.Worksheets("Sheet1")


’セルを変数に格納

Dim セル

Set セル = ThisWorkbook.Worksheets("Sheet1").Cells(1, 1)

Setを付けない場合はエラーになります。

Setを付けてVBAを実行します。(実行はtest()内にカーソルを置いて、[F5]でできます。)

結果は以下のようになります。

 

変数のメリット

コードが見やすくなる

変数名を短くすることで、コードが見やすくなります。以下は例として、変数を使用していないコードです。

'変数未使用
ThisWorkbook.Worksheets("シート1").Cells(ThisWorkbook.Worksheets("シート1").Cells(ThisWorkbook.Worksheets("シート1").Rows.Count, 1).End(xlUp).Row + 1, 1) = ThisWorkbook.Worksheets("シート2").Cells(2, 2)

横に長くなり、横スクロールしなければすべてのコードを確認できません。

変数を使った場合は以下のようになります。変数宣言は省いています。

'変数使用
集計表.Cells(集計表の最終行, 1) = 台帳.Cells(2, 2)

コードの内容は一緒ですが、変数を使うだけで見やすいですね。

 

式の意味を理解しやすくなる

変数を使うことで、ただの数字が何を意味するのか分かるようになります。

以下のコードの1.1は、ぱっとみは何の数字かわからないですよね。

‘100~500円を税込みにしてセルに出力
Cells(1,1) = 100 * 1.1

Cells(2,1) = 200 * 1.1

Cells(3,1) = 300 * 1.1

Cells(4,1) = 400 * 1.1

Cells(5,1) = 500 * 1.1

これを変数で命名してあげることで、式の意味が分かるようになります。

‘100~500円を税込みにしてセルに出力

Dim 消費税

消費税 = 1.1

Cells(1,1) = 100 * 消費税

Cells(2,1) = 200 * 消費税

Cells(3,1) = 300 * 消費税

Cells(4,1) = 400 * 消費税

Cells(5,1) = 500 * 消費税

 

 

値の書き換えが楽になる

変数内の値変更の際に、書き換えが楽になります。

‘100~500円を税込みにしてセルに出力

Cells(1,1) = 100 * 1.1

Cells(2,1) = 200 * 1.1

Cells(3,1) = 300 * 1.1

Cells(4,1) = 400 * 1.1

Cells(5,1) = 500 * 1.1

先ほどのコードの場合、1.1を書き換えるには5か所を変更する必要があります。

しかし変数を使うと、書き換える場所は一か所になるため管理が楽になりミスも減ります。

‘100~500円を税込みにしてセルに出力

Dim 消費税

消費税 = 1.1

Cells(1,1) = 100 * 消費税

Cells(2,1) = 200 * 消費税

Cells(3,1) = 300 * 消費税

Cells(4,1) = 400 * 消費税

Cells(5,1) = 500 * 消費税