【Excel VBA】変数の宣言方法について

りゅう
こんにちは!りゅう(@ryupong_b)です。
今回は、「変数の宣言」について解説していきます。
はじめに

ExcelVBAでの変数の宣言方法について解説していきます。
宣言方法に加え、変数の種類や注意点なども併せて説明しますので、ぜひ最後までお付き合いください。

この記事を読むメリット
  • 変数の宣言方法が分かります。
  • 変数のデータ型の特徴などを詳しく解説します。

Dimステートメントについて

変数を宣言する際は、Dimステートメントを使用します。
詳細を解説します。

構文

変数宣言時の構文は以下の通りです。
「変数名」と「データ型」については後述します。

構文

Dim 変数名 As データ型

サンプルコード

以下は、文字列型と数値型を宣言するサンプルコードです。

サンプルコード
Public Sub testVariable()
    Dim str As String   ' 変数宣言:文字列型
    Dim num As Integer  ' 変数宣言:数値型

    str = "ABC"
    num = 100

End Sub
めい
次項では、変数名とデータ型について詳しく解説していきます。

変数名の命名規則

前述した変数名ですが、命名規則(名前を付けるうえでのルール)が存在します。
命名規則の一覧を以下に記載します。

命名規則一覧
  • 変数名には、文字・数字・_(アンダースコア)が使用可能
  • 変数名の先頭には_(アンダースコア)は利用不可
  • 文字数上限は半角255文字(全角は128文字)
  • 同一メソッド内で同名の変数名は宣言不可
りゅう
ExcelVBAでは、日本語の変数名も宣言できます。
ただし、人によっては日本語の変数名に違和感を覚える人もいますので、あまりオススメはしません。
※筆者は違和感を覚えるタイプです(笑)

データ型について

代表的なデータ型一覧

ExcelVBAで利用できる代表的なデータ型を以下に記載します。
ぜひご参考としてください!

# データ型 使用メモリ 詳細
1 Byte 1Byte 0~255までの整数を扱える。使用メモリが少ないのが特徴。
2 Boolean 2Byte TrueまたはFalseを格納できる。
3 Integer 4Byte -32,768~-32,767の数値を扱える。
4 Long 4Byte -2,147,483,648~2,147,483,647の数値を扱える。
5 LongLong 8Byte -2,147,483,648~2,147,483,647の数値を扱える。
6 Single 4Byte 小数点を含む数値を扱える。
7 Double 8Byte 小数点を含む数値を扱える。Single型よりも大きい小数点の桁数を設定可能。
8 Date 8Byte 日付、時刻を扱える。
9 String 10Byte + α 文字列を扱える。10Byteは必ず確保され、10Byteを超過する場合は動的にメモリが確保される。
10 Object 4Byte オブジェクトへの参照が格納される。
11 Variant 数値型:16Byte
文字列型:22Byte + α
すべてのデータを格納できる。
めい
いっぱいあるね…
りゅう
メモリ効率を意識すると、例えば「0~100」までしかあり得ない値は、
Byte型などを使った方が良いのは事実なのですが、メモリを意識しないといけない規模のプログラムを書くこと自体稀なので、
プログラミングを学びたての方などはLong型などを使っても良いと個人的に思います!

最後に

ここまで見て頂きましてありがとうございました。
変数の宣言については、実はDimステートメントや型指定をしなくても生成できるのですが、必ず明示的に指定しましょう。
※宣言をせずともVariant型として変数の生成が出来ますが、使用メモリの効率も悪いうえに リテラシーも向上しないため。

変数の宣言を必須にするためには、以下の記事で紹介している「Option Explicit」を記載するのがオススメです!

あわせて読みたい
【Excel VBA】Option Explicitの意味を解説します。 はじめに ExcelVBAのサンプルコードを検索していると、Option Explicitというキーワードを目にしませんか? これは標準モジュールやクラスの冒頭に記載するコードなので...
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

大手外資系コンサルティングファーム勤務。ExcelVBA歴は8年。金融関係のプロジェクトにて約100万レコードを処理するマクロの開発実績あり。ExcelVBAの基礎・応用情報を発信中。

コメント

コメントする

CAPTCHA