VBAにて開発をしており、現在下記要件を満たしつつ、
定数を構造化(?)したいと考えております。
前提①
ある標準モジュール内でのみ使用される定数は、
その標準モジュール内で宣言する。
現在のコードの宣言部を一部を抜粋します。
VBA
1'メッセージ出力用文字列 2Private Const ERROR_MESSAGE_HOGE As String = "~が設定されていません。" 3Private Const INFO_MESSAGE_HOGE As String = "~が完了しました" 4'-- 略 5Private Const QUESTION_MESSAGE_HOGE As String = "~を出力しますか?" 6 7'セル番地の定義 8Private Const HOGESHEET_TITLE As String = "$B$2" 9Private Const HOGESHEET_HEADER_NO As String = "$C$3" 10Private Const HOGESHEET_HEADER_NAME AS String = "$D$3" 11'--略 12Private Const HUGESHEET_HEADER_SKILL As String = "$I$3" 13
- やりたいこと
メッセージ出力用文字列のための定数と
セル番地の定義用文字列を構造体として持ち、
下記のような実装にしたい。
VBA
1Private Type MessageString 2 Const ERROR_MESSAGE_HOGE As String = "~が設定されていません。" 3 Const INFO_MESSAGE_HOGE As String = "~が完了しました" 4 Const QUESTION_MESSAGE_HOGE As String = "~を出力しますか?" 5End Type 6 7Private Type HogeSellAddress 8 Const TITLE As String = "$B$2" 9 Const HEADER_NO As String = "$C$3" 10 Const HEADER_NAME AS String = "$D$3" 11End Type 12 13Private Type HugeSellAddress 14 Const HEADER_SKILL As String = "$I$3" 15End Typr 16 17 18Private Sub setString() 19 Dim hogeSA As HogeSellAddress 20 HogeSheet.Range(hogeSA.TITLE).Value = "title" 21 22 Dim hugeSA As HugeSellAddress 23 HugeSheet.Range(hugeSA.HEADER_SKILL).Value = "skill" 24End Sub
上記、書くには書きましたが、実際にはConstの定義は構造体で持てないのか、
Dim hogeSA As HogeSellAddressの宣言直後に
hogeSAを入力し、ctr + spaceによる入力補完で候補の出力がされません。
Type内の宣言で定数以外(変数)を定義した場合は入力補完にて候補が出るため、
定数であることが要因でしょうが、このような記述をしたいと考えた場合は
どのような対処が必要でしょうか。
よろしくお願いいたします。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2018/03/06 06:30
2018/03/06 09:34 編集
2018/03/08 00:21