ExcelマクロVBA入門 | 第13回.定数と型宣言文字(Const) | Excelマクロの基礎と応用、エクセルVBAの入門・初級・初心者向け解説



最終更新日:2018-02-19

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


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

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

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


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


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

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


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

このように宣言します。

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

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

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

Const int開始行 = 3

このように宣言し、

"見出し"という文字の代わりに、strタイトルを、

3という数値の代わりに、int開始行を使ったりします。

このようにすることで、

同じ文字や数値を、プログラム内で複数個所に記述しなくて済みます。

そして、定数を変更する場合は、このConstを修正すれば良いので、「保守性」が高まります。

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

Dim int開始行
int開始行 = 3


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

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

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

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


ここまでの説明で、

文字は、"(ダブルクォーテーション)で囲みます。

数値は、そのまま書いていることは、気づきましたか。

これは理屈抜き、そのように指定するものだと理解して下さい。

ただし、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入門」の記事

第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)

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

数値範囲で表検索するVLOOKUP近似一致|エクセル関数超技(10月5日)
エクセルVBAでのシート指定方法|VBA技術解説(9月8日)
VBAのクラスとは(Class,Property,Get,Let,Set)|VBA技術解説(8月28日)
VBAこれだけは覚えておきたい必須基本例文10|VBA技術解説(8月22日)
VBAの省略可能な記述について|ExcelマクロVBA技術解説(8月11日)
複数条件判定を行う時のコツ|ExcelマクロVBA技術解説(7月11日)
For Next の使い方いろいろ|VBA技術解説(6月14日)
VBAを定型文で覚えよう|ExcelマクロVBA技術解説(3月26日)
VBAスタンダード試験対策まとめ|MOS VBAエキスパート対策(3月16日)
ユーザーフォームとメニューの操作|MOS VBAエキスパート対策(3月14日)

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

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



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

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


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





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

    本文下部へ

    ↑ PAGE TOP