第13回.定数宣言のConstと型宣言文字
前回は変数を説明しましたが、変数があれば当然のように定数もあります。
変数は値が変わる(変えられる)もの、定数は値が変わらない(変えられない)ものです。
また、
覚えておくことが困難な数値や、使い方が分かりにくい値をVBAで使うことが必要になることもあります。
このような場合には定数を使います。
定数は、Constで宣言します。
Const定数の基本
変数との違いは、VBA実行の途中で値を変更できない事です。
一度宣言したら、ずっとその値のままで使用します。
Const strタイトル As String = "見出し"
Const int開始行 = 3
このように宣言し、
"見出し"という文字の代わりに、strタイトルを、
3という数値の代わりに、int開始行を使うようにします。
strタイトルは"見出し"という文字、int開始行は3という数値として使う事ができるようになります。
✅意味のない数値や長い文字を、分かりやすい名称で使う事が出来ます。
✅同じ文字や数値を、VBA内で何度も記述しなくて済みます。
✅文字や数値を変更する場合、Const定数だけを修正すれば良く「保守性」が高まります。
変数でも同じ事が出来るが・・・
int開始行 = 3
わざわざ、Constを覚える必要がないのでは・・・
ですが、マクロを処理手順を記載した文章として考えて下さい。
つまり、「可読性」の問題だという事です。
逆に言えば、見た目だけの違いなので、変数だけを使ったマクロでも、特に何も支障はないという事です。
「「可読性」の問題だという事」と書きましたが、
VBAの中には、変数は指定できない場所があります。
その場所には、定数を指定しなければならないということです。
・配列宣言の要素数 ・・・ ずっと先の学習内容です。
今後VBAの学習を進めていくうえで、「定数式が必要です」というメッセージを見た時になんとなく思い出せれば十分です。
Dim a As Long
a = 1
Const b As Long = a
ダブルクォーテーションについて
文字は、"(ダブルクォーテーション)で囲み、
数値は、そのまま書いていることは、気づきましたか。
ただし、VBAでは数値を"で囲んでも問題ありません。
文字列型の変数・定数に入れるときは"で囲むと分かり安いでしょう。
型宣言文字
これは正しいです。
しかし、ネット等のサンプルを見た場合に、意味が分からなくては困ります。
そして、データ型に関しては、もう一つの指定方法があります。
それが、型宣言文字です。
型宣言文字 | 変数の型 |
% | Integer(整数型) |
& | Long(長整数型) |
! | Single(単精度浮動小数点型) |
# | Double(倍精度浮動小数点型) |
@ | Currency(通貨型) |
^ | Longlong(64ビット符号付き数値)※64ビットExcelのみ有効 |
$ | String(文字列型) |
Dim i%
Const j& = 123456
このように宣言することで、データ型を指定できます。
123%
123&
このように、同じ数値でも、
Integer型の数値なのか、Long型の数値なのかを指定することが出来ます。
特に使わなければ出来ないと言うような事もありませんので、
このような指定もあるのだと、記憶の片隅に置いておけばよいです。
16進定数、8進定数
指定方法だけ掲載しておきます。
8進 : &O
Const i2 As Long = &O11 '8進数の11なので10進数で9
日付の定数に関する注意
このように指定してしまう事がありますが、これは間違いです。
私もたまにやってしまいます。(笑)
日付の定数を指定する場合は、
Const 日付定数 As Date = #12/28/2011#
このように、#で囲みます。
#12/28/2011#の部分は、
#2011/12/28# と入力しても、自動的に#12/28/2011#に変換されます。
Constにデータ型を指定しない場合のデータ型
Const 定数1 = 123 'Integer
Const 定数2 = 123456 'Long
Const 定数3 = 1.2 'Double
Const 定数4 = #7/27/2020# 'Date
Const 定数5 = "文字列" 'String
Const 定数12 = 123& 'Long
Const 定数13 = 123! 'Single
Const 定数14 = 123# 'Double
Const 定数15 = 123@ 'Currency
Const 定数16 = 123^ 'LongLong
※Integerの型文字#を整数値に指定しても、#が消えて整数値だけになります。
その他の定数
VBAには、あらかじめ用意された定数もあります。
定数を大別すると、以下の3つになります。
✅ユーザー定義の定数 ・・・ 独自に設定する定数。ここまでに説明したものです。
✅条件付きコンパイル定数 ・・・ 条件によりコンパイルを変更できます。こちらのページを参照してください。
組み込み定数について
このようにvbで始まります。
このようにmsoで始まります。
このようにxlで始まります。
列挙体についての詳細はここでは割愛しますが、
従って、
VBA全体としての共通部分と、ExcelVBA独自の部分があります。
Const変数宣言のまとめ
ここでしっかりと覚えてほしいことは、
マクロVBAの中で変化させる必要のない決まった数値・文字はConstで定数として宣言することができるということです。
同じテーマ「マクロVBA入門」の記事
第14回.文字の結合(&アンパサンド)と継続行(_アンダーバー)
新着記事NEW ・・・新着記事一覧を見る
VBA10大躓きポイント(初心者が躓きやすいポイント)|VBA技術解説(2024-03-05)
テンキーのスクリーンキーボード作成|ユーザーフォーム入門(2024-02-26)
無効な前方参照か、コンパイルされていない種類への参照です。|エクセル雑感(2024-02-17)
初級脱出10問パック|VBA練習問題(2024-01-24)
累計を求める数式あれこれ|エクセル関数応用(2024-01-22)
複数の文字列を検索して置換するSUBSTITUTE|エクセル入門(2024-01-03)
いくつかの数式の計算中にリソース不足になりました。|エクセル雑感(2023-12-28)
VBAでクリップボードへ文字列を送信・取得する3つの方法|VBA技術解説(2023-12-07)
難しい数式とは何か?|エクセル雑感(2023-12-07)
スピらない スピル数式 スピらせる|エクセル雑感(2023-12-06)
アクセスランキング ・・・ ランキング一覧を見る
1.最終行の取得(End,Rows.Count)|VBA入門
2.RangeとCellsの使い方|VBA入門
3.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
4.繰り返し処理(For Next)|VBA入門
5.変数宣言のDimとデータ型|VBA入門
6.ブックを閉じる・保存(Close,Save,SaveAs)|VBA入門
7.並べ替え(Sort)|VBA入門
8.条件分岐(IF)|VBA入門
9.セルのクリア(Clear,ClearContents)|VBA入門
10.マクロとは?VBAとは?VBAでできること|VBA入門
このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。
記述には細心の注意をしたつもりですが、
間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。
掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。