Option Explicit '=========================================================== ' *メッセージクラス(シート定義) ' ' Ver 1.0 ' ' #ref(Z_cMsgBySheet_1.0.txt) ' #ref(cMsgBySheet_1.0.txt) ' ' **コンストラクタ ' Private Sub Class_Initialize() ' **初期化 ' Public Function Initialize() ' **ステータス取得 ' Public Function getStatus() ' ' **メッセージ内容取得 ' Public Function getMessage() ' **メッセージボックス表示 ' Public Function MessageBox() ' **YesNoボックス表示 ' Public Function YesNoBox() ' **メッセージグループ取得 ' Public Function getMsgGroup() ' **エラーレベル判定 ' Public Function isLevelError() ' **警告レベル判定 ' Public Function isLevelWarning() ' **通常レベル判定 ' Public Function isLevelNormal() ' ' **終了 ' Public Function Terminate() ' **デコンストラクタ ' Private Sub Class_Terminate() ' **Excel終了時処理 ' Private Sub foExcelApplication_WorkbookBeforeClose() ' **フィールドクリア ' Private Sub clearField() '=========================================================== 'シート名 Private fsSheetName As String 'MSGID Private fsMsgId As String 'レベル Private fsMsgLevel As String 'グループ Private fsMsgGroup As String 'メッセージ Private fsMsgValue As String 'メッセージ Private fsDislayMsg As String '埋込文字 Private fsCoverupMsg As String 'Initialize済フラグ Private fbInitialize As Boolean Private WithEvents foExcelApplication As Excel.Application Private Const csMsgBySheetKeyMark = "$$KEY$$" '# '# コンストラクタ '# Private Sub Class_Initialize() Set foExcelApplication = Excel.Application Call clearField End Sub '# '# 初期化 '# [戻り値]: '# Boolean '# True: 成功 '# False:失敗 '# [引 数]: '# isSheetName '# 取得するシート名 '# isMsgId(String) '# メッセージID '# fsCoverupMsg(String) '# 埋込文字(CSV形式) '# Public Function Initialize( _ isSheetName As String, _ isMsgId As String, _ isCoverupMsg As String _ ) As Boolean Dim lbRet As Boolean Dim loSgSheet As New cSheetControl loSgSheet.Initialize (isSheetName) '#初期化済でないこと If (fbInitialize <> False) Then lbRet = False 'シートが存在していること ElseIf (loSgSheet.isCheckFoundSheet() = False) Then lbRet = False '#実行条件適合 Else lbRet = True fbInitialize = True fsSheetName = isSheetName fsMsgId = isMsgId Dim lsSearchItemString As String lsSearchItemString = _ Replace(csMsgBySheetKeyMark, "KEY", fsMsgId) Dim lsSheetName As Worksheet Set lsSheetName = Worksheets(fsSheetName) If lsSheetName.Cells.Find(lsSearchItemString) Is Nothing Then Dim lsNotFoundMsg As String lsNotFoundMsg = _ "MSGID未検知" & _ " シート名[" & fsSheetName & "]" & _ " メッセージID[" & fsMsgId & "]" fsMsgLevel = lsNotFoundMsg fsMsgGroup = lsNotFoundMsg fsMsgValue = lsNotFoundMsg Else Dim lvCelFoundPosition As Variant Set lvCelFoundPosition = lsSheetName.Cells( _ lsSheetName.Cells.Find(lsSearchItemString).Row, _ lsSheetName.Cells.Find(lsSearchItemString).Column + 1 _ ) fsMsgLevel = lvCelFoundPosition Set lvCelFoundPosition = lsSheetName.Cells( _ lsSheetName.Cells.Find(lsSearchItemString).Row, _ lsSheetName.Cells.Find(lsSearchItemString).Column + 2 _ ) fsMsgGroup = lvCelFoundPosition Set lvCelFoundPosition = lsSheetName.Cells( _ lsSheetName.Cells.Find(lsSearchItemString).Row, _ lsSheetName.Cells.Find(lsSearchItemString).Column + 3 _ ) fsMsgValue = lvCelFoundPosition fsDislayMsg = fsMsgValue fsCoverupMsg = isCoverupMsg If (fsCoverupMsg <> "") Then Dim lvRet As Variant lvRet = SpilitString(fsCoverupMsg, ",") If (Not IsEmpty(lvRet)) Then Dim liLoopCounter1 As Integer For liLoopCounter1 = 0 To UBound(lvRet) Step 1 fsDislayMsg = _ Replace( _ fsDislayMsg, _ "%" & liLoopCounter1, _ lvRet(liLoopCounter1) _ ) Next liLoopCounter1 End If End If End If End If Initialize = lbRet End Function '# '# ステータス取得 '# [戻り値]: '# String '# CSV形式でプライベート変数内容を返却 '# [引 数]: '# なし '# Public Function getStatus( _ ) As String Dim lsRet As String lsRet = _ "fbInitialize=" & fbInitialize & _ ",fsSheetName=" & fsSheetName & _ ",fsMsgId=" & fsMsgId & _ ",fsMsgLevel=" & fsMsgLevel & _ ",fsMsgGroup=" & fsMsgGroup & _ ",fsMsgValue=" & fsMsgValue & _ ",fsCoverupMsg=" & fsCoverupMsg getStatus = lsRet End Function '# '# メッセージ内容取得 '# [戻り値]: '# String '# メッセージ内容を返却 '# [引 数]: '# なし '# Public Function getMessage( _ ) As String Dim lsRet As String '#初期化済であること If (fbInitialize <> True) Then lsRet = "" '#実行条件適合 Else lsRet = fsDislayMsg End If getMessage = lsRet End Function '# '# メッセージボックス表示 '# [戻り値]: '# Boolean '# [引 数]: '# なし '# Public Function MessageBox( _ ) As Boolean Dim lbRet As Boolean '#初期化済であること If (fbInitialize <> True) Then lbRet = False '#実行条件適合 Else lbRet = True Dim lsMsg As String lsMsg = getMessage() If (Me.isLevelNormal) Then MsgBox lsMsg, vbInformation, fsMsgId ElseIf (Me.isLevelWarning) Then MsgBox lsMsg, vbExclamation, fsMsgId Else MsgBox lsMsg, vbCritical, fsMsgId End If End If MessageBox = lbRet End Function '# '# YesNoボックス表示 '# [戻り値]: '# Boolean '# [引 数]: '# なし '# Public Function YesNoBox( _ iiDefaultButton As Integer _ ) As Boolean Dim lbRet As Boolean '#初期化済であること If (fbInitialize <> True) Then lbRet = False '#実行条件適合 Else lbRet = True Dim lsMsg As String lsMsg = getMessage() Dim liPriortyButton As Integer If (iiDefaultButton = vbYes) Then liPriortyButton = vbDefaultButton1 Else liPriortyButton = vbDefaultButton2 End If Dim liRetValue As Integer If (Me.isLevelNormal) Then liRetValue = MsgBox(lsMsg, vbInformation + vbYesNo + liPriortyButton, fsMsgId) ElseIf (Me.isLevelWarning) Then liRetValue = MsgBox(lsMsg, vbExclamation + vbYesNo + liPriortyButton, fsMsgId) Else liRetValue = MsgBox(lsMsg, vbCritical + vbYesNo + liPriortyButton, fsMsgId) End If If (liRetValue = vbYes) Then lbRet = True Else lbRet = False End If End If YesNoBox = lbRet End Function '# '# メッセージグループ取得 '# [戻り値]: '# String '# メッセージ内容を返却 '# [引 数]: '# なし '# Public Function getMsgGroup( _ ) As String Dim lsRet As String '#初期化済であること If (fbInitialize <> True) Then lsRet = "" '#実行条件適合 Else lsRet = fsMsgGroup End If getMsgGroup = lsRet End Function '# '# エラーレベル判定 '# [戻り値]: '# Boolean '# [引 数]: '# なし '# Public Function isLevelError( _ ) As String Dim lbRet As Boolean lbRet = (fsMsgLevel = "ER") isLevelError = lbRet End Function '# '# 警告レベル判定 '# [戻り値]: '# Boolean '# [引 数]: '# なし '# Public Function isLevelWarning( _ ) As String Dim lbRet As Boolean lbRet = (fsMsgLevel = "WN") isLevelWarning = lbRet End Function '# '# 通常レベル判定 '# [戻り値]: '# Boolean '# [引 数]: '# なし '# Public Function isLevelNormal( _ ) As String Dim lbRet As Boolean lbRet = (fsMsgLevel = "NR") isLevelNormal = lbRet End Function '# '# 終了 '# [戻り値]: '# Boolean '# True: 成功 '# False:失敗 '# [引 数]: '# なし '# Public Function Terminate( _ ) As Boolean Dim lbRet As Boolean '#初期化済であること If (fbInitialize <> True) Then lbRet = False '#実行条件適合 Else lbRet = True Call clearField End If Terminate = lbRet End Function '# '# デコンストラクタ '# Private Sub Class_Terminate() Set foExcelApplication = Nothing Call Me.Terminate End Sub '# '# Excel終了時処理 '# Private Sub foExcelApplication_WorkbookBeforeClose( _ ByVal Wb As Workbook, Cancel As Boolean _ ) Class_Terminate End Sub '# '# フィールドクリア '# Private Sub clearField() fbInitialize = False fsSheetName = "" fsMsgId = "" fsMsgLevel = "" fsMsgGroup = "" fsMsgValue = "" fsCoverupMsg = "" End Sub