ユーザー定義定数
Constステートメントを使い、定数を宣言します。 定数を宣言することで、プログラム内では値ではなく定数で記述することが可能になります。
サンプルプログラムでは、これらが定数で宣言されています。
- オープンするブックのパス (3行目)
- 対象となるシート名 (4行目)
- 取得するセルの行番号 (5行目)
- 取得するセルの列番号 (6行目)
- 各種メッセージ (8~10行目)
実行プログラム
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
Option Explicit Public Const FILE_FULLPATH As String = "C:\excelmemo\Sample1_3_1.xlsx" ' 対象ブック パス Public Const SHEET_NAME_01 As String = "入力シート" ' シート名 Public Const NAME_ROW_NUM As Integer = 2 ' 氏名 行番号 Public Const NAME_COL_NUM As Integer = 3 ' 氏名 列番号 Public Const NORMALEND_MSG As String = "正常終了しました。" ' 正常終了メッセージ Public Const ERROR_MSG_01 As String = "ファイルが存在しません。" ' エラーメッセージ(1) Public Const ERROR_MSG_02 As String = "未入力です。" ' エラーメッセージ(2) Sub Sample1_3_1() Dim objWB As Workbook Dim strName As String ' 存在確認 If Len(Dir(FILE_FULLPATH)) = 0 Then ' 対象ブック パス MsgBox ERROR_MSG_01 ' エラーメッセージ(1) Exit Sub End If ' ブックオープン Set objWB = Workbooks.Open(Filename:=FILE_FULLPATH) ' 対象ブック パス ' 氏名取得 strName = objWB.Worksheets(SHEET_NAME_01).Cells(NAME_ROW_NUM, NAME_COL_NUM) ' 行/列番号 ' 入力確認 If Len(strName) = 0 Then objWB.Close MsgBox ERROR_MSG_02 ' エラーメッセージ(2) Exit Sub End If MsgBox strName ' ブッククローズ objWB.Close MsgBox NORMALEND_MSG ' 正常終了メッセージ End Sub |
- 小文字でも宣言は可能ですが、慣例として大文字で宣言します。
実際のプログラムではコード内に文字列、数値などが直接記述されることはありません。
特にプログラムの中で何度も記述するものは定数にしておきます。
例えばフォーマット変更に伴うセルアドレスの修正が発生した場合、同じセルを何度も記述している場合、記述箇所の分だけ修正しなければなりませんが、サンプルのように定数宣言しておけば宣言箇所を修正するだけで済みます。
修正が容易、且つ、修正漏れの危険性が軽減されます。
保守性という観点からも定数で宣言しておくべきと言えます。
特にプログラムの中で何度も記述するものは定数にしておきます。
例えばフォーマット変更に伴うセルアドレスの修正が発生した場合、同じセルを何度も記述している場合、記述箇所の分だけ修正しなければなりませんが、サンプルのように定数宣言しておけば宣言箇所を修正するだけで済みます。
修正が容易、且つ、修正漏れの危険性が軽減されます。
保守性という観点からも定数で宣言しておくべきと言えます。
組み込み定数(システム定義定数)
定数には、ユーザーが定義するもの以外にアプリケーションにより提供されているものがあります。
それらが組み込み定数です。
頻繁に使用する数値が存在しますが、数値のままでは覚えにくく、可読性も低くなり保守が困難になります。
定数を使うことで、コード可読性を高め、保守も容易になります。
例えば、次のプログラムではStrConv関数に第2パラメーターとして"32"を渡しています。
しかし、"32"が何を意味するか覚えておくのは大変です。
1 2 3 4 5 |
Sub Sample1_3_2() MsgBox StrConv("アイウエオ", 32) End Sub |
実行結果
実際に実行してみると、ひらがなに変換されました。
こういう場合の為に用意されているのが、組み込み定数です。 次のプログラムでは”vbHiragana”となっています。
1 2 3 4 5 |
Sub Sample1_3_3() MsgBox StrConv("アイウエオ", vbHiragana) End Sub |
これであれば、意味がわかるので可読性が高まります。
関数ごとに定数を確認してください。