変数の使い方・変数宣言・変数が定義されていません:Access VBA入門

VBAなどのプログラムを作成する場合、必ず変数を使用します。

ここでは、変数宣言など変数の使い方について説明と、変数が定義されていませんと表示された場合の原因と対処方法を掲載します。

変数にはデータ型があります。

データ型の種類については、こちらを参照してください。

BackHome BackVBA入門


● 変数宣言と使用例

前回作成したVBAは下記のコードでした。

Sub MyMessage()
    MsgBox "Access VBA"
End Sub

これを下記に変更します。
Sub MyMessage()
    Dim s As String
    s = "Access VBA"
    MsgBox s
End Sub

このDim部分が変数宣言です。
Dim 変数名 As データ型

ここでは、sという名前の変数を宣言し、これに「Access VBA」という文字列を代入しています。
そしてMsgBox関数の引数に変数sを設定しています。
変数を宣言し、これに「Access VBA」という文字列を代入

実行結果は前回と同じになります。
実行結果は前回と同じになる

上は文字型の変数を使用しましたが、数値型の変数に変更してみます。
変数iは数値型なので、数値を代入します。
そして、i + 2 のように計算ができます。

Sub MyMessage()
    Dim i As Long
    i = 123
    MsgBox i * 2
End Sub

数値型の変数に変更する

実行すると計算結果が表示されます。
計算結果が表示される

● 型が一致しません

下のように、数値型に文字列を代入し実行してみます。

Sub MyMessage()
    dim i as long
    i = "Access VBA"
    MsgBox i * 2
End Sub

数値型に文字列を代入し実行する

すると「型が一致しません。」とエラーメッセージが表示されます。
このように、データ型に合ったデータを代入する必要があります。
ただし、文字列型に数値を代入した場合、エラーにならず自動的に数値は文字列に変換されます。
また、Variant(バリアント型)はどんなデータでも代入できます。
「型が一致しません。」とエラーメッセージが表示

● 変数が定義されていません

下のように、Option Explicitを追加した場合、変数は必ず宣言する必要があります。
Option Explicitを使うと、変数によるバグを防ぐ手助けになります。

Option Explicit
Sub MyMessage()
    i = 123
    MsgBox i * 2
End Sub

Option Explicitを追加した場合

Option Explicitを使用し、変数宣言をしなかった場合「変数が定義されていません。」とエラーメッセージが表示されます。
対処するには、Option Explicitを外せばいいのですが、バグ防止のためできるだけ変数はきちんと宣言するようにします。
「変数が定義されていません。」とエラーメッセージが表示

BackHome BackVBA入門

Copyright(C) FeedSoft