常識のように『変数』という言葉が出てくるけど、どういう意味?
変数は何のためにあるの?使う必要は?
VBAやプログラミングを学ぶ上で、変数は避けて通れない考え方です。ただ初心者が初めに困るのも、この変数の考え方だと思います。私もプログラミングを勉強し始めて、一番初めに躓いたのが変数の考え方でした。
本日は、最も基本的で重要な考え方である変数について紹介していきます。変数が何のためにあって、どうして使う必要があるのかを理解することで、VBAやプログラミングの学習をスムーズに進めることができます。
しっかりこの記事で勉強してみてください!
※プログラミング学習はパラシュート式学習法がおすすめです!
変数とは
変数は、データを一時的に入れる箱のようなものです。VBAでは、変数の名前は自由に設定することができ、日本語も使用することができます。
変数に数値や文字列などのデータを入ることで、一時的にデータを保存し、あとから必要な場所で使えるようになります。
また変数には、整数・小数・文字などの「型」を指定する必要があります。基本的に、最初に決めた型の値しか入れることができません。
変数は何のために使うの?変数の用途とメリット!
①繰り返し処理ができるようになる
変数を使う一番の理由は、ループ処理と呼ばれる繰り返し処理を行う為です。
ループ処理を使用すると、一行ずつ・一列ずつ・すべてのシートなど、同じ処理を繰り返す作業を自動化できます。
これにより、手作業で一つ一つの操作を行う必要がなくなり、簡潔で効率的なVBAやプログラムを作ることができます。
②コードが読みやすくなる
一覧データが入ったSheet1というシートを扱う場合、通常であればworksheets(“Sheet1”)のような形で、エクセルのシート名で指示を行います。
ただ「データシート」という変数を作ることで、worksheets(“Sheet1”)とかく部分を「データシート」に置き換えることができるようになります。こうすることで、どのシートを指しているか読みやすくなります。
このように変数の名前は自由に設定できるため、変数を使うことでコードが読みやすくなります。
また、変数を使うことで同じ値を複数の場所で使い回すことができ、値の変更が必要な場合も一箇所で修正するだけで済みます。
③コードを書く量を短縮できる
変数を使用することで、文字数を減らすことができます。②で説明をした、シート名を変数で置き換える場合もそうです。
②の場合、データシートからデータを取ってくる場合、毎回Worksheet(“Sheet1”)と入力する必要がありますが、「データシート」という変数を設定すれば、書き込む言葉を日本語にでき、入力の文字数も減らすことができます。
自動化や時短のためにVBAを作成しているとき、忘れがちになるのがコードを書く時間です。コードを書く時間そのものを短くすることで、全体的な効率化を進めることができます。
変数の使い方
ここからは具体的な変数の使い方を見ていきます。
変数を使う手順は、
①変数に入るデータを「宣言」する
②変数にデータを「代入」する
③変数に入っているデータを「呼び出す」
の3つです。
①宣言方法
宣言とは、自分で決めた変数の中に、整数が入るのか、文字が入るのかなど、何が入るかプログラム上に書くことです。変数を使う為には、基本的に変数の型を宣言する必要があります。
VBAでは「Dim 変数 as データ型」と書き込むことで変数の宣言をすることができます。データ型の部分には、整数や文字列などデータの種類を記載します。
例えば、文字が入る「あいさつ」という変数を作成する場合は、次のようになります。
文字が入る「あいさつ」という変数
→Dim あいさつ as String
Stringというのは、文字列を示すデータ型です。
詳細なデータ型については、「変数の種類」で詳しく説明します。
②代入方法
代入は、宣言した変数に、数値や文字などのデータを入れる事を言います。
代入するときは、「変数 = 入れたいデータ」という形で記載します。イコールの左側に変数を置き、右側に代入したいデータを書きます。右から左にデータを入れるイメージです。
例として、①で宣言した「あいさつ」という変数に、「こんにちは」という文字を入れる場合、次のようになります。
文字が入る「あいさつ」という変数に、「こんにちは」という文字を入れる
→あいさつ = “こんにちは”
これで、イコールの左にある「こんにちは」という文字列のデータが、イコールの右にある「あいさつ」という変数に入り呼び出すことができるようになりました。
※文字列について
上の例で「こんにちは」がダブルクォーテーション(“)で囲んでありますが、これが文字列を表します。
文字列は、言葉の並びデータとして、文字を使うときに使います。箱である変数や、「Dim」などの意味を持つプログラミング言語ではない、ただの文字の並びのデータとして、文字を扱うときに使います。
例えば、A1のセルに「Range」と入力したい場合は次のように書きます。
A1のセルに「Range」という文字の並びを入れる。
→Range(“A1”)=“Range”
左側のRange(“A1”)の「Range」は、セルの場所を表すプログラミング言語となり、文字列ではないのでダブルクォーテーション(“)は付きません。
ただ、右側の「Range」はA1のセルに入れる文字の並び(文字列)なので、ダブルクォーテーション(“)が付きます。
※RangeやCellsの使い方は別ページで解説しています
③呼び出し方法
変数を使用する場合、呼び出しという操作を行います。呼び出しは、変数に入っているデータを使いたいところに、変数名を書くだけで使えます。
先ほど作成した「あいさつ」という変数に、格納された「こんにちは」という文字列を、メッセージボックスで表示する場合、以下のようになります。
「あいさつ」という変数を、ダイアログボックスで表示させる
→MsgBox あいさつ
①~③を続けて書くと以下のような形になります。
Sub Tes()
'①宣言
Dim あいさつ As String
'②代入
あいさつ = "こんにちは"
'③呼び出し
MsgBox あいさつ
End Sub
このコードを実行すると、「あいさつ」という変数に入っている「こんにちは」という文字列が、MsgBox(ダイアログボックス)で表示されます。
変数一覧
「Dim 変数 as データ型」で変数を宣言するときの、データ型にはルールがあります。一覧としては以下となります。
後述しますが、すべて覚える必要はありません。
データ型名 | 変数 | 格納できるデータ | データ内容 |
整数型 | Integer | -32,768~32,767の整数 | 数値 |
長整数型 | Long | -2,147,483,648~2,147,483,647の整数 | 数値 |
単精度浮動小数点型 | Single | 負の値:約-3.4×10(38乗)~-1.4×10(-45乗) 正の値:約1.4×10(-45乗)~1.8×10(38乗) | 数値 |
倍精度浮動小数点型 | Double | 負の値:約-1.8×10(308乗)~-4.0×10(-324乗) 正の値:約4.9×10(-324乗)~1.8×10(308乗) | 数値 |
通貨型 | Currency | -922,337,203,685,477.5808 ~ 922,337,203,685,477.5807の固定小数点数 | 数値 |
文字列型 | String | 任意の長さの文字列 | 文字列 |
日付型 | Date | 日付:西暦100年1月1日~西暦9999年12月31日 時刻:0:00:00~23:59:59 | 日付 |
オブジェクト型 | Object | オブジェクト参照するデータ型 | オブジェクト |
ブール型 | Boolean | True または False | 真偽 |
バイト型 | Byte | 0~255の正の整数 | バイト |
ユーザー定義型 | Type | Type で定義した型、構造体 | ユーザー定義 |
バリアント型 | Variant | すべてのデータ | 全てのデータ |
変数のポイント
①悩むくらいならコレでいい
VBAには、どんなデータでも入れられるVariantというデータ型があります。もし迷った場合は、Variantを使えば問題ありません。
そもそもなぜ、Variant型があるのに個別のデータ型が存在しているかというと、入力ミス防止と動作速度の向上が主な理由です。データ型を宣言して変数を設定する方が大規模なコードを組む時も分かりやすくミス防止となり、速度も若干速くなるため、多くの教本ではVariant型は非推奨となっています。
ですが「小数点入りの数値のデータ型ってなんだっけ…」などと悩むくらいなら、Variant型で書いちゃった方が断然効率がいいです。
教本やサイトを見ていても、データ型は個別に宣言するのが常識であるという風潮は正直あります。ですが変数の宣言をVariant型にしようがしまいが、エラーは起きるし、個人レベルのVBAで速度の違いなんて知れています。正直私は、データ型を覚えるより、Variantのスペルを覚えた方がよっぽど効率がいいと思っています。
今流行りのPythonなんか、変数の宣言すらしません。
宣言の際に「as データ型」の部分を書かずに、「Dim 変数」だけを書けば、Variant型に分類されますので、困ったらVariantを使ってください。
②覚えるとしても必要なのは5つだけ
しかし、特定の場面でVBAを他の人と共同で使用したり、個別のデータ型を宣言したいというケースもあるでしょう。そのような場合でも、以下の5つのデータ型を覚えておけば、ほとんどのコードを組むことができます。
データ型名 | 変数 | 格納できるデータ |
長整数型 | Long | 整数 |
倍精度浮動小数点型 | Double | 小数点付の数字 |
文字列型 | String | 文字列 |
日付型 | Date | 日付 |
オブジェクト型 | Object | ワークシート・ワークブックなど |
数字を使うときは、小数点がなければLong、あればDouble。文字列がStringで日付がDateで、ワークシートとかワークブックを使うときはObjectを使う。というこの5つを覚えておけば、とりあえず何とかなります。
ワークシートやワークブックには、個別のデータ型である「WorkSheet」などもありますが、Objectですべて使えるので、とりあえずこれらを覚えておけば、まず問題はありません。
最後に
今回は、VBAにおける変数の役割について解説しました。
変数の考え方はVBAに限らず、プログラミングを行う上でかなり重要で基本的な考え方となります。
この記事で変数の考え方、使い方を押さえて、VBAを使った業務効率化を目指していきましょう!
※ChatGPTを使った、VBA作成・学習法を別ページで紹介しています!
コメント