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

Excelマクロの基礎と応用、エクセルVBAの入門・初級・初心者向け解説
最終更新日:2019-03-16 定数と型宣言文字(Const)|ExcelマクロVBA入門

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

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

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


前回は、変数を説明しましたが、


変数があれば、当然のように定数もあります、

つまり、変数は値が変わるもの定数は値が変わらないものです。


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



VBAの中で、固定数値(10や123等)や固定文字("ABC"や"あいう"等)を使う代わりに、
これらの固定値にあらかじめ名前を付けておくものだと考えれば良いでしょう。

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

このような場合には定数を使います。


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

このように宣言します。

変数との違いは、途中で値を変更できない事です。

一度宣言したら、ずっとその値のままで使用します。

Const strタイトル As String = "見出し"

Const int開始行 = 3

このように宣言し、
VBAの中で、

"見出し"という文字の代わりに、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(通貨型)

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#に変換されます。



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

マクロの中で変化させる必要のない数値・文字は、
Constで定数として宣言できるということを覚えて下さい。


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

・組み込み定数 ・・・ VBAに用意されている定数
・ユーザー定義の定数 ・・・ 独自に設定する定数、上で説明したものです。
条件コンパイル定数 ・・・ 条件によりコンパイルを変更できます。、こちらのページを参照してください。

組み込み定数について

VBA共通の組み込み定数は、
vb○○○
このようにvbで始まります。

Office共通の列挙体は、
mso○○○
このようにmsoで始まります。

Excel独自の列挙体は、
xl○○○
このようにxlで始まります。

定数には、単独としての定数と列挙体があります。
列挙体についての、詳細はここでは割愛しますが、
複数の数値定数をひとまとめにしてグループ化したものになります。

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





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

Range以外の指定方法(Cells,Rows,Columns)
RangeとCellsの使い方
変数とデータ型(Dim)
定数と型宣言文字(Const)
文字の結合と継続行(&アンパサンド)
四則演算と注釈
繰り返し処理(For Next)
繰り返し処理(Do Loop)
最終行の取得(End,Rows.Count)
総合練習問題1
条件分岐(IF)

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

エクセルの日付と時刻のまとめ|エクセル関数超技(3月6日)
Excelシートの複雑な計算式を解析するVBA|VBAサンプル集(2月18日)
VBAクラスの作り方:独自Rangeっぽいものを作ってみた|VBA技術解説(2月16日)
VBAクラスの作り方:列名のプロパティを自動作成する|VBA技術解説(2月14日)
VBAクラスの作り方:列名の入力支援と列移動対応|VBA技術解説(2月11日)
クラスを使って他ブックのイベントを補足する|VBA技術解説(2月6日)
Excelアドインの作成と登録について|VBA技術解説(2月3日)
参照設定、CreateObject、オブジェクト式の一覧|VBA技術解説(1月20日)
VBAでファイルを規定のアプリで開く方法|VBA技術解説(1月20日)
ドキュメントプロパティ(BuiltinDocumentProperties,CustomDocumentProperties)|VBA技術解説(1月19日)

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

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



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

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


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






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

    本文下部へ