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

お知らせ記事には広告が含まれておりますがExcelのスキルUPに繋がる様コンテンツ自体は手を抜かずに作成しております

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

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

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

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

EnjoyExcel
EnjoyExcel

前回記事で変数について学習しました。今回も変数について学習してもらいます。

柔軟な使い方が出来る変数には一定の決まりがあります。

前回の記事

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

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

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

本記事での課題

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

EnjoyExcel
EnjoyExcel
課題

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

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

変数を宣言する:Dimとは

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

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

Dim の使い方

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

Dimは「変数を使いますよ」という宣言です。

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

変数にも一定の決まりがある

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

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

変数を使う時は型を指定してから使うのが決まり(例外有)だと考えてOKです。

最後のシングルクォーテーション以降はコメントです。コメントは書いても書かなくても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ビットだなと想像されると思います。

今回はこれ以上掘り下げませんのでこのぐらいにしておきます。

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

理屈上は上記のような建付けなのですが現在はPCのレベルも上がっています。

使用者側がメモリの心配をする必要はないと言われています。

よって実務ではメモリの容量を気にせず使い勝手を考えて変数を選択していただくことをおすすめします。

ここで私がどうやって変数の型を選択しているのかについてひとつの例を紹介します。

整数はLong型一択

私は整数を使うときはLong型ばかりです。

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

先ほど申し上げた通り最近のパソコンではメモリの使用量を気にしなくてよいとの事ですのでLong型を使っています。

Long型を使うのにはもう1つ理由があります。

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

よってできるだけ桁数の変化に対応し易い様にLongを使っています。

Option Explicitについて

続いて「Option Explicit」の解説をします。シリーズ2番目の記事で触れましたがその時は説明しませんでした。

説明する機会がきましたので解説します。これは「変数の宣言を強制する」という事を謳(うた)っています。

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

なんとなくですが「なんか不便になってませんか?」と考えたこともありました。最初は確かに不便です。

ただしスキルアップした時や複数人で作業する機会が増えてくると不便さを超えるメリットを感じる事になります。

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

メリット含め以降で解説していきます。

Option Explicitの表示方法

VBEに文字を直書きしてもOKですがVBEからの操作を紹介しておきます。

まずは「ツール」タブを押下。その後「オプション」を押下。

オプション」というタイトルのダイアログボックスが立ち上がります。

変数の宣言を強制する(R)」にレ点を付けてください。

これでこのダイアログボックスでの操作は終了です。

OK」ボタンを押下しダイアログボックスを閉じてください。その後コードウインドウを確認します。

これでコードウインドウの先頭に「Option Explicit」が表示されます。

表示されない方は上記設定が出来たらデータを保存してから一旦Excelを閉じましょう

再度Excelを起動させてVBEを確認してください。これで表示が入るはずです。

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

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

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

エラーチェック

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

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

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

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

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

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

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

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

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

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

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

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

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

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

参考:Option Explicitの表記はおすすめですが強制はしません

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

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

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

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

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

応用:変数の定義を用意する際の具体例

あくまで私の使用例ですが変数を定義する際はコメント含めこんな感じで書いてます。

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

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

f:id:EnjoyExcel:20220226012841p:plain

この場合はコードの量としては少なく変数の数も4つだけでした。

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

*(アスタリスク)を使って仕切りを作るなど見易さを考えてコーディングしてあげるのもおすすめですよ。

まとめ

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

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

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

Enjoy Excel

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

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

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

参考:関連記事

本シリーズはこちらの記事とも連携しています。

マクロ勉強の道筋マクロは何から勉強するのか|学習をサポートするためのロードマップを作成

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