エクセルバージョン
マイクロソフト365
本日はVBAをこなしていくには絶対に避けては通れない変数について詳しく解説していきたいと思います。
それではいってみましょう!
Menu
変数とは
文字や数字などを入れられます。
例
number=1
str=”文字”
みたいに左の文字に右の数字や文字などを入れられます。
なぜ変数を使用するのか
・可読性があるのと使用したほうが便利だから使用します。
【連続した数字を100個セルに書き出す場合】
A列に下記のようにVBAでCellsを1個1個、書いたら時間がかかってしまいますよね(TдT) ウゥ…
【例1】
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | Option Explicit Sub 変数() Cells(1, 1) = 1 Cells(2, 1) = 2 Cells(3, 1) = 3 Cells(4, 1) = 4 Cells(5, 1) = 5 … … … … Cells(100, 1) = 100 End Sub |
【例2】
A列に変数iを使用してセルに書きこんだ例
変数を使用すればFor文で繰り返し変数を使用できるので数秒で処理が完了します。
Forが分からない場合は → VBA繰り返し処理
1 2 3 4 5 6 | Sub 変数() Dim i As Integer For i = 1 To 100 Cells(i, 1) = i Next End Sub |
この構文で変数と繰り返し処理を行うことで、1秒くらいで1~100までの数字が、A1~A100セルに書き込めます。
ですので時短ができるのと、コードが短く可読性があるので変数を使用するわけです(*^^)v
変数を記述する準備
変数の強制
まずは下記の手順でどおりに作業を進めていきましょう!
ツール ➔ オプショ ン ➔ 変数の宣言を強制するにチェックを入れます。
これで変数の記述忘れを防止できます。
標準モジュールを開く
まずは前回学んだ標準モジュールを作成してから、下記のようなプロシージャを作成します。
忘れた方はこちらでご確認できます。 ➔ 標準モジュール
先程変数の強制にチェックしたことで1番最初の行にOption Explicitという1文が挿入されます。
これで準備は整ったので早速、変数を記述していきましょう(★‿★)
1 2 3 4 5 6 7 | Option Explicit Sub hensu() 'まずは変数を記述します。 End Sub |
Dim
Dimステートメント
最初のDimですが変数を記述する時は、頭にDimと記述するルールになっていますので、ここは時間をかけずにそういうもんなんだで覚えちゃいましょう!
1 | Dim number As Integer |
変数名
変数の名前
1 | Dim mumber As Integer |
次に、このnumberが変数になります。
そしてこの変数の名前は自分で決めます。
この変数名を決める時には命名規則というのがあるのですが、自分だけで使用する場合は最初はエラーが出なければなんでも構いません。
とりあえず記号などを使用せず、ひらがなや漢字も使用できますが、英文字のみで記述する癖をつけましょう。自分だけで使用するならaとか1文字でもとりあえずOKです。
変数名はなるべく英字で記述。これだけ覚えておきましょう。
変数の型
1 | Dim mumber As Integer |
Asですが、Asは型の前に際に記述します。
そしてInteger。これが型になります。
(型にはいろいろな種類があります)
ここではIntegerは(-32,768 〜 32,767)までの整数を、変数numberの中に入れられるとだけ覚えておいてください。
次の検証で意味がわかります(*^^)v
Integerの型が正しいか検証してみる
それではIntegerは(-32,768 〜 32,767)の整数までなのかを実際にコードを記述して確認してみます。
32767を変数に入れて検証
変数にnumberに32767という整数をいれて実行してみます。
1 2 3 4 5 6 7 | Sub 変数の型を検証1() Dim number As Integer '型をintegerの整数指定 number = 32767 'numberに32767という整数を入れてみる MsgBox number 'メッセージボックスに表示 End Sub |
【結果】
32767がメッセージボックスに表示されます。
32768を変数に入れて検証
変数numberに例1より1大きい32768という整数をいれて実行してみます。
1 2 3 4 5 6 7 | Sub 変数の型を検証2() Dim number As Integer '型をintegerの整数指定 number = 32768 'numberに32768という整数を入れてみる MsgBox number 'メッセージボックスに表示 End Sub |
【結果】
エラーがでてオーバーフローしました。が表示されます。
ということでIntegerは32767よりおおきな数字は変数には格納できません。
変数に文字を入れてみる
文字を変数に入れてみます。その際に文字を使用する型指定はStringを指定します。
【サンプル】
文字を変数に入れる時は必ず下記の例の”Hello” ← をダブルクォーテーションで文字を囲います。
1 2 3 4 5 6 7 | Sub 変数の型に文字指定() Dim str As String '型をStringの文字指定 str = "Hello" '変数strにHelloという文字を入れてみる MsgBox str '変数strをメッセージボックスに表示 End Sub |
変数の型一覧
ずらずら~っと一覧があって混乱すると思いますが、先程も述べたように先頭の3つくらいしか最初のうちは使用しないと思うので、ここは先程の「型が一致しません」のエラーが出た際など必要な時だけ閲覧すればいいと思います(^^)
データ型 | 記憶領域サイズ | 範囲 |
String (可変長) | 10 バイト + 文字列の長さ | 0 〜 約 20 億 |
Integer | 2 バイト | -32,768 〜 32,767 |
Long (Long 整数) | 4 バイト | -2,147, 483,648 〜 2,147, 483,647 |
Variant (数値) | 16 バイト | 最大で Double の範囲までの任意の数値 |
Boolean | 2 バイト | True または False |
Object | 4 バイト | 任意の Object 参照 |
Byte | 1 バイト | 0 ~ 255 |
Single (単精度浮動小数点数) | 4 バイト | -3.402823E38 から -1.401298E-45 (負の値) 1.401298E-45 から 3.402823E38 (正の値) |
Double (倍精度浮動小数点数) | 8 バイト | 負の値)-1.79769313486231E308 から -4.94065645841247E-324 (正の値)4.94065645841247E-324 から 1.79769313486232E308 |
Date | 8 バイト | 100 年 1 月 1 日 から 9999 年 12 月 31 日 |
Collection | 不明 | 不明 |
Currency (スケーリングされた整数) | 8 バイト | -922,337,203,685,477.5808 ~ 922,337,203,685,477.5807 |
Decimal | 14 バイト | (小数点なし)+/-79,228,162,514,264,337,593,543,950,335 (小数点以下 28 桁)+/-7.9228162514264337593543950335 (0 ではない最小の値)+/-0.0000000000000000000000000001 |
Dictionary | 不明 | 不明 |
LongLong (LongLong 整数) | 8 バイト | -9,223,372,036,854,775,808 から 9,223,372,036,854,775,807 |
64 ビット プラットフォームでのみ有効。 | ||
LongPtr (32 ビット システムでは Long 整数、64 ビット システムでは LongLong 整数) | 32 ビット システムでは 4 バイト 64 ビット システムでは 8 バイト | -2,147,483,648 から 2,147,483,647 (32 ビット システム) |
-9,223,372,036,854,775,808 から 9,223,372,036,854,775,807 (64 ビット システム) | ||
文字列型 (String) (固定長) | 文字列の長さ | 1 〜 約 65,400 |
まとめ
ずらずらと長い文章を書きましたが、VBAを記述しているうちに嫌でも変数なんかは覚えちゃいますので心配ありません。
慣れれば特に難しいことではなく、毎回使用する便利なものになります(★‿★)
変数は慣れです。
定数は下記で解説しています。
以上です。