ExcelのVBAの変数

投稿日: 2024年5月17日

ExcelのVBA(Visual Basic for Applications)における変数とは、データを一時的に保持するための名前付きの記憶場所のことを指します。
プログラム内でデータを操作したり計算したりするためには、変数を使用します。

変数の基本的な考え方

例えばスーパーマーケットの買い物リスト

あなたは日常のタスクや重要な情報を忘れないように、メモ帳に書き留めます。例えば、買い物リスト
メモ帳が「変数」で、メモ帳に書かれた各情報が「変数の値」です。「買い物リスト」というページ(変数名)に「リンゴ、牛乳、パン」という値を保存します。

VBAでの変数の宣言と使用例

上記の日常の例をVBAに置き換えてみます。買い物リストを保存して使う場合を考えます。変数を宣言するときは「Dim」(ディム)を使います。
Dim 変数名 As データ型

Sub MemoList()
    Dim shoppingList As String
    shoppingList = "リンゴ, 牛乳, パン"
    MsgBox "今日の買い物リスト: " & shoppingList
End Sub

この例では、shoppingListという変数を宣言し、その中に「リンゴ, 牛乳, パン」という買い物リストを保存しています。
次に、その変数の値を使ってメッセージボックスに買い物リストを表示します。

変数はプログラム内で情報を一時的に保管し、必要なときにその情報を取り出して使うための「箱」や「場所」のようなものです。
日常生活の中で使う冷蔵庫、メモ帳、引き出しなどの役割と同様に考えると、変数の概念がより理解しやすくなります。

変数の種類

VBA(Visual Basic for Applications)では、さまざまな種類の変数を使って異なる種類のデータを保存できます。それぞれの変数の種類(データ型)には特定の用途があり、効率的にデータを扱うために選択されます。

分類概要使用メモリ量説明
数値型Integer整数2バイト範囲は -32,768 から 32,767 までです。
Long整数4バイト範囲は -2,147,483,648 から 2,147,483,647 までです。
Single単精度浮動小数点数4バイト範囲は約 -3.4E38 から 3.4E38 までです。
Double倍精度浮動小数点数8バイト範囲は約 -1.7E308 から 1.7E308 までです。
Currency通貨計算用8バイト範囲は -922,337,203,685,477.5808 から 922,337,203,685,477.5807 までです。
文字列型String文字列10バイト+文字列の長さ最大2GBまでの文字列を保存可能です。
論理型Boolean真偽値2バイト真(True)または偽(False)の二値を保存します。
日付型Date日付時刻8バイト範囲は 100年1月1日 から 9999年12月31日 までです。
オブジェクト型Objectオブジェクト4バイトExcelシート、Word文書などのオブジェクトを扱う際に使用します。
特殊型Variant何でも型数値:16バイト
文字:22バイト+文字列の長さ
特定の型を事前に決定できない場合や異なる型のデータを扱う場合に使用します。メモリ消費が大きいので注意が必要です。
ユーザー定義型要素に依存要素に依存要素に依存それぞれの要素の範囲は、そのデータ型の範囲と同じである

VBA(および他のプログラミング言語)にはさまざまな種類の変数が存在しますが、その理由は以下のような多くの要因に基づいています。

1. メモリ効率の向上

各変数の種類はメモリ内で異なる量のスペースを占めます。適切なデータ型を使用することで、プログラムが必要とするメモリ量を最適化できます。

  • Integer: 整数のみを扱い、2バイトのメモリを使用します。
  • Long: より大きな整数を扱うため、4バイトのメモリを使用します。
  • SingleDouble: 小数点を含む数値を扱うため、4バイトまたは8バイトのメモリを使用します。

適切な型を選ぶことで、メモリの無駄を避け、パフォーマンスを向上させることができます。

2. 処理速度の向上

特定のデータ型は他のデータ型よりも処理が速いことがあります。例えば、整数型(Integer)は浮動小数点数(SingleやDouble)よりも計算が速いことが多いです。

  • Integer計算はCPUにとって単純であり、迅速に処理できます。
  • Doubleはより多くの精度を必要とし、計算が複雑になるため、処理に時間がかかることがあります。

特定のタスクに最適なデータ型を選ぶことで、プログラムの実行速度を最適化できます。

3. データの整合性

異なる種類の変数は、特定の種類のデータを正確に表現するために使用されます。これにより、データの整合性と正確性が確保されます。

  • Date型は日付と時刻を正確に扱うための特別な形式を持っています。
  • Boolean型は真偽値(TrueまたはFalse)を扱い、論理的な条件評価に最適です。

これにより、誤ったデータの取り扱いや、不適切なデータ型の使用によるバグを防ぐことができます。

4. コードの可読性と保守性の向上

明示的にデータ型を指定することで、コードの可読性が向上し、他の開発者がコードを理解しやすくなります。

  • String型の変数がテキストを扱うことを明確に示します。
  • Integer型の変数が整数値を扱うことを示します。

これにより、コードの保守性が向上し、将来的な修正や拡張が容易になります。

変数の命名規則

VBAの変数の命名規則を理解し、守ることで、コードの可読性と保守性が向上します。

命名規則説明
キャメルケース変数名の1個目の単語は全て小文字にし2個目以降の単語の先頭を大文字にする方法です。
読みやすさが向上します。
単語が一つの場合は全て小文字になります。
totalPrice,
firstName, lastModified
アンダースコア単語の区切りにアンダースコアを使用する方法です。
特に長い名前の変数に対して有効です。
total_price, first_name,
last_modified
パスカルケース各単語の最初の文字を大文字にする方法。
関数名やクラス名に推奨されます。
MyVariableName
大文字のスネークケース変更されない値(定数)MAX_SPEED

プロジェクト全体で一貫した命名規則を使用することが重要です。一貫性が保たれていると、コードの可読性と保守性が向上します。

変数を宣言した場合のサンプルコード

Sub SampleVariables()

    ' 変数の宣言
    Dim greeting As String
    Dim number1 As Integer
    Dim number2 As Integer
    Dim sum As Integer

    ' 変数への値の代入
    greeting = "Hello, VBA!"
    number1 = 10
    number2 = 20

    ' 変数を使った計算
    sum = number1 + number2

    ' 結果をメッセージボックスに表示
    MsgBox greeting
    MsgBox "Number1: " & number1
    MsgBox "Number2: " & number2
    MsgBox "Sum: " & sum

End Sub

このサンプルを実行すると、順番に4つのメッセージボックスが表示され、それぞれにgreeting、number1、number2、sumの値が表示されます。これにより、変数の宣言、値の代入、および使用方法を視覚的に理解することができます。

記事