VBA-8変数の宣言とは何かマクロの中で使い方を決めます

変数は宣言してから使いましょう

本記事では変数の定義、データ型について解説してきます。

変数を使うにあたって決まりがありますのでここで紹介させていただきます。

本記事を読むとコード内で変数を定義する方法、変数のデータ型の種類について学ぶことが出来ます

前回の記事

前の記事では変数という機能を使ってコードを書いてみました。

コードの中でうまく使う事でセルの範囲や値がどんな値でも一旦受けてくれます。

これで都度範囲が違うデータに対しても柔軟に対応出来るようになります。

本記事での課題

今回の課題です。重要度高い記事です。頑張って理解してください。

EnjoyExcel
EnjoyExcel
課題

変数を宣言する理由を理解しよう

初心者向けエクセルマクロ学習シリーズ

Dimについて

前回記事の最後に Dim が出てきました。続きを説明させていただきます。

Dimは以下の様に使います。

Dim の使い方

Dim ○○ As △△ ’○○に対する説明(コメント)

Dimは「変数を使いますよ」というコードの書き出しだと思ってください。

Dimの後に続く〇〇は変数です。変数はほぼどんな言葉でも(日本語でも英語で)OKです。

もともとVBAで設定されているワードはNGですのでご注意ください。

続いてAsのあとに続く△△に入るのは型です。数値とか文字とか日付等々あります。

というわけで変数を使う時は型を指定してから使うのが決まりだと思ってください。

最後のシングルクォーテーション以降はコメントです。

コメントは書いても書かなくてもOKです。

書いた方が自分にも他人にも優しいので出来るだけコメントを書くクセをつけてください。

なぜ自分にも他人にも優しいかは後程説明します。

変数の型を提示

では具体的な型の説明に入ります。

必要最低限の説明で最初に使いそうな型だけ並べました。

値の範囲は各々勉強の進度に応じて調べてください。

番号コードデータ型値の範囲
1String文字列文字列
2BooleanブールTrueまたはFalse
3Integer整数一定の範囲の整数
4Long長整数Integerより広い範囲の整数
5Single小数一定の範囲の小数
6Date日付日付
7VariantなんでもOKなんでもOK
全部ではないですが頻度が高そうなものを紹介しておきます

桁が多い変数はその分メモリを消費する

Integer と Long はどちらも整数(数値)です。

Integer は -32,768 ~ 32767 の整数。 Long は-20億~+20億ぐらいの数値を扱う事が出来ます。 

数値を見た時に2進法が分かる人は思いつくと思います。

Integer型は2バイトで16ビット、Long型は4バイトで32ビットだなと想像されると思います。

今回は掘り下げませんのでこのぐらいにします。

要するに桁を多く持てる型を定義するときはそれだけ大きな領域を使うという事です。

実際は整数はLong型一択

私はセルを追いかける時も金額もほとんどLongばかりです。

私が知らないぐらい古いパソコンでは不要に桁数を多く確保すると処理速度が遅くなったようです。

最近のパソコンではそんなに大差もないので気にせずLongを使っています。

もう1つ理由があります。

対象としているデータが増えてIntegerの範囲ではまかないきれない時はエラーになります。

変化に対応し易い様にLongと書いています。

あくまで私の理屈ですので本当は仕事にあった型の定義を行ってください。

Option Explicitについて

続いて「Option Explicit」の解説をします。これは「変数の宣言を強制する」という事を言ってます。

(訳として合ってるかは?です)

「Option Explicit」を書くとDim・・・という様に変数を宣言しないとエラーが出るように設定出来ます。

エラーが出るように設定・・・「なんか不便になってませんか?」と考えたこともありました。

確かに不便です。

ただし不便さを超えるメリットがあります

変数を宣言する際は冒頭に「Option Explicit」を書いてDim・・・を使って変数を宣言した方が良いです。

変数の宣言をする事のメリット

変数の宣言におけるメリットは大きく分けて2つです。

  • エラーチェック
  • 他の人の書いたコードを読む時や自分のコードを他の人に読んでもらう時に便利に働く
エラーチェック

定義した型と違う型の値が入力された際エラーを出してくれます。

エラーで間違いを教えてくれます。リカバリーしやすい環境を作る事ができます。

もう1つのチェック機能として自動変換の機能も追加されます。

例えば「ABE」という変数を設定した際 「abe」と入力しEnterを押すと自動で「ABE」に変換されます。

入力間違いが起きにくくエラーが出ないように助けてくれます。

他の人の書いたコード・・・便利に働く

続いて他人のコードを読むとき・・・便利に働くについて説明します。

変数は自由に設定出来るのでコード内でいろんな変数が設定出来ます。

たくさん変数が使われると「この変数は何のこと?何に使っているの?」といった事が起きます。

自分でも思考が制御出来なくなり読みにくいコードを書くことになってしまいます。

当たり前ですが書いた人でも理解するのに苦労する変数(コード)は書いてない人が読むと非常に難解です。

数ヵ月すると書いた本人も忘れてしまいます。

メンテしたくてもリカバリーできず結局コードを全部書き直すという事が起こるかもしれません。

誰もが読みやすくする為には作法が重要です。

最終的には臨機応変に

Option Explicit」を書いた後型を定義しコメントで内容を説明するという作法を守りましょう。

後で自分が見る時、他者が見る時もある程度見当がつくようなコードを書くことが出来ます。

ただし自由度が大きいVBAですのでこれが絶対ではないです。

少ない量のコードであったり使用する変数の数が3~5個程度であれば説明は不要かもしれません。

ここは慣れですので各自の状況で判断してください。

書き方の具体例

あくまで例ですがコメントまで残す際はこんな感じで書いてます。

一例として他のデータから画像だけ取ってきましたので内容は全く分からなくて大丈夫です。

フォーマットとしてこんな感じなんだなと思ってください。

f:id:EnjoyExcel:20220226012841p:plain

この場合はコードの量としてはそんなに多くなかったし変数の数も4つです。

しかし説明がないと他者に伝わらないかもしれない考えコメントを残すようにしました。

まとめ

作法を守ってコードを書くとトレーサビリティの要素を備えた変数を用意する事が出来ます

よって変数は宣言してから使いましょう。

本日勉強したこと
  1. 変数はいろんな型がある
  2. 変数は宣言してから使おう
  3. コメントで変数の説明をしよう
正しく変数を使おう

Enjoy Excel

次は罫線を書いたりコードをセル画面から実行できる様ボタンを設定するための説明をします。

ボタンを押したらメッセージボックスを出して処理をするか?の確認も付けたいです。

メッセージボックスもセットしたいですね。 次回説明以降でしていきます。

タイトルとURLをコピーしました