ExcelマクロVBA入門
第13回.定数と型宣言文字(Const)

Excelマクロの基礎と応用、エクセルVBAの入門・初級・初心者向け解説
最終更新日:2019-09-19

第13回.定数と型宣言文字(Const)


前回は、変数を説明しましたが、変数があれば、当然のように定数もあります、
つまり、変数は値が変わるもの定数は値が変わらないものです。


定数とは、数値や文字列の代わりに使用される、意味を持たせた名前のことです。

VBAプログラムの中で同じ値を何度も使うことがあります。
また、
覚えておくことが困難な数値や、使い方が分かりにくい値をVBAで使う必要になることもあります。
このような場合には定数を使います。
定数は、Constで宣言します。

Const定数の基本

Const 定数名 [As データ型] = "定数の値"

このように宣言します。
変数との違いは、途中で値を変更できない事です。
一度宣言したら、ずっとその値のままで使用します。

Const strタイトル As String = "見出し"
Const int開始行 = 3

このように宣言し、
"見出し"という文字の代わりに、strタイトルを、
3という数値の代わりに、int開始行を使うようにします。

このようにすることで、
同じ文字や数値を、プログラム内で複数個所に記述しなくて済みます。
そして、定数を変更する場合は、このConstを修正すれば良いので、「保守性」が高まります。

変数でも同じ事が出来るが・・・

Dim int開始行
int開始行 = 3


このようにすれば、定数を使わなくても済みそうです。
わざわざ、Constを覚える必要がないのでは・・・


確かに、マクロの動作としては同じことになります。
ですが、マクロを処理手順を記載した文章として考えて下さい。

int開始行は値を変えることがあるのか無いのか・・・

マクロを見たときに一目でわかる方が、手順書として優れていることは間違いないはずです。
つまり、「可読性」の問題だという事です。
逆に言えば、見た目だけの違いなので、変数だけを使ったマクロでも、特に何も支障はないという事です。

※注意).VBAを学んでいくと
ここを読んでいる段階では、まだ理解が難しいので、
「「可読性」の問題だととりあえずは考えて良い」と書きましたが、
VBAの中には、変数は指定できない場所があります。

VBAには変数で指定すると、「定数式が必要です」とエラーになる場合があります。
その場所には、定数を指定しなければならないということです。
123
"ABC"
Const定義した定数
このような指定をしなければならないので、変数は指定できない場所と言事です。

具体的なVBAをここで提示しても理解が追いつかないので、
今後VBAの学習を進めていくうえで、
「定数式が必要です」というメッセージを見た時になんとなく思い出せれば十分です。

ダブルクォーテーションについて

ここまでの説明で、
文字は、"(ダブルクォーテーション)で囲みます。
数値は、そのまま書いていることは、気づきましたか。

これは理屈抜き、そのように指定するものだと理解して下さい。
ただし、
VBAでは、数値を"で囲んでも問題ありません。
数値型の変数・定数に入れるときは数値をそのまま書き、

文字列型の変数・定数に入れるときは"で囲むと分かり安いでしょう。

型宣言文字

前回の変数の説明では、データ型はまだ覚えなくて良いと説明しました。
これは正しいです。
しかし、ネット等のサンプルを見た場合に、意味が分からなくては困ります。
全てを記憶し、使いこなす必要はありませんが、 どんな型があるかくらいは知っておく必要があるでしょう。
そして、データ型に関しては、もう一つの指定方法があります。
それが、型宣言文字です。

型宣言文字 変数の型
% Integer(整数型)
& Long(長整数型)
$ String(文字列型)
! Single(単精度浮動小数点型)
# Double(倍精度浮動小数点型)
@ Currency(通貨型)
^ Longlong(64ビット符号付き数値)※64ビットExcelのみ有効

Dim i%
Const j& = 123456


このように宣言することで、データ型を指定できます。
ただし、このような使い方をすることはあまりなく、
プログラム内において、リテラル値(定数値)を指定する場合に、
使う事がほとんどです。
123%
123&

このように、同じ数値でも、
Integer型の数値なのか、Long型の数値なのかを指定することが出来ます。

しかし、これも、もっとマクロを覚えてからで良いですし、
特に使わなければ出来ないと言うような事もありませんので、
このような指定もあるのだと、記憶の片隅に置いておけばよいです。

16進定数、8進定数
さすがに、滅多に使う事はないと思いますが、
指定方法だけ掲載しておきます。

16進 : &H
8進 : &O


Const i1 As Long = &H10 '10進数で16
Const i2 As Long = &O10 '10進数で8
日付の定数に関する注意
Const 日付定数 As Date = 2011 / 12 / 28 '←ダメ!
このように指定してしまう事がありますが、これは間違いです。
私もたまにやってしまいます。(笑)

2011 / 12 / 28 は、2011 ÷ 12 ÷ 28 の計算結果の数値となってしまいます。
日付の定数を指定する場合は、
Const 日付定数 As Date = #12/28/2011#
このように、#で囲みます。
#12/28/2011#の部分は、#2011/12/28#
と入力しても、自動的に、#12/28/2011#に変換されます。

型宣言文字については、そのようなものがあるのだとだけ覚えておけば十分です。

その他の定数

以上、独自に設定できる定数について説明してきましたが、
VBAには、あらかじめ用意された定数もあります。
定数を大別すると、以下の3つになります。

・組み込み定数 ・・・ VBAに用意されている定数
・ユーザー定義の定数 ・・・ 独自に設定する定数、上で説明したものです。
条件付きコンパイル定数 ・・・ 条件によりコンパイルを変更できます。、こちらのページを参照してください。
条件付きコンパイルはVBAの特定のコードブロックを選択してコンパイルしますVBAの他の部分は無視されます条件付きコンパイルステートメントは実行時ではなくコンパイル時に実行されます。条件に基づいてコンパイルするコードのブロックを指定するには #If...Then...#Elseディレクティブを使用します。

組み込み定数について
VBA共通の組み込み定数
vb○○○
このようにvbで始まります。
mso○○○
このようにmsoで始まります。
xl○○○
このようにxlで始まります。

定数には、単独としての定数と列挙体があります。
列挙体についての、詳細はここでは割愛しますが、
列挙体は、数値限定のConst定数をひとまとめにして参照しやすくしたものになります、マクロVBAの中で数値を固定で記述することは、メンテナンスが大変になります。例えば、列位置3(C列)を参照する場合、VBA内で何度も3と記述しては、これを変更することが大変になります。
複数の数値定数をひとまとめにしてグループ化したものになります。

VBAは、Office全般で使える共通のプログラミング言語です。
従って、
VBA全体としての共通部分と、ExcelVBA独自の部分があります。


多くの事を説明しましたが、後半はまだ直ぐには理解できなくても何も問題はありません。
ここでしっかりと覚えてほしいことは、
マクロの中で変化させる必要のない数値・文字は、
Constで定数として宣言できるということです。




同じテーマ「マクロVBA入門」の記事

第10回.Range以外の指定方法(Cells,Rows,Columns)
第11回.RangeとCellsの使い方
第12回.変数とデータ型(Dim)
第13回.定数と型宣言文字(Const)
第14回.文字の結合(&アンパサンド)と継続行(_アンダーバー)
第15回.四則演算と注釈(コメント)
第16回.繰り返し処理(For Next)
第17回.繰り返し処理(Do Loop)
第18回.最終行の取得(End,Rows.Count)
第19回.総合練習問題1
第20回.条件分岐(IF)


新着記事NEW ・・・新着記事一覧を見る

文字列結合&でコンパイルエラーになる理由|VBA技術解説(9月19日)
Byte配列と文字コード関数について|VBA技術解説(8月20日)
PowerQueryの強力な機能をVBAから利用する方法|VBA技術解説(8月4日)
練習問題31(セル結合を解除して値を埋める)|VBA練習問題(7月30日)
練習問題30(マトリックス→リスト形式)|VBA練習問題(7月25日)
Applicationを省略できるApplicationのメソッド・プロパティ一覧|VBA技術解説(7月22日)
コレクション(Collection)の並べ替え(Sort)に対応するクラス|VBA技術解説(7月20日)
CSVの読み込み方法(ジャグ配列)|VBAサンプル集(7月15日)
その他のExcel機能(グループ化、重複の削除、オートフィル等)|VBA入門(7月14日)
オートフィルタ退避回復クラスを複数シート対応させるVBAクラス|VBA技術解説(7月6日)


アクセスランキング ・・・ ランキング一覧を見る

1.最終行の取得(End,Rows.Count)|VBA入門
2.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
3.RangeとCellsの使い方|ExcelマクロVBA入門
4.Range以外の指定方法(Cells,Rows,Columns)|VBA入門
5.変数とデータ型(Dim)|ExcelマクロVBA入門
6.繰り返し処理(For Next)|ExcelマクロVBA入門
7.マクロって何?VBAって何?|ExcelマクロVBA入門
8.セルに文字を入れるとは(Range,Value)|VBA入門
9.ひらがな⇔カタカナの変換|エクセル基本操作
10.空白セルを正しく判定する方法(IsEmpty,IsError,HasFormula)|VBA技術解説



  • >
  • >
  • >
  • 定数と型宣言文字(Const)

  • このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。


    記述には細心の注意をしたつもりですが、
    間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
    なお、掲載のVBAコードは自己責任で使ってください。万一データ破損等の損害が発生しても責任は負いません。




    このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。
    本文下部へ