Option Explicit '=========================================================== ' *シート制御クラス ' ' Ver 1.0 ' ' #ref(Z_cSheetControl_1.0.txt) ' #ref(cSheetControl_1.0.txt) ' ' **コンストラクタ ' Private Sub Class_Initialize() ' **初期化 ' Public Function Initialize() ' **ステータス取得 ' Public Function getStatus() ' ' **シート可視不可視 ' Public Function VisibleSheet() ' **シート存在チェック ' Public Function isCheckFoundSheet() ' **シート追加 ' Function inserSheetName() ' **シート名変更 ' Function updateSheetName() ' **シート削除 ' Function deleteSheetName() ' ' **終了 ' Public Function Terminate() ' **デコンストラクタ ' Private Sub Class_Terminate() ' **Excel終了時処理 ' Private Sub foExcelApplication_WorkbookBeforeClose() ' **フィールドクリア ' Private Sub clearField() '=========================================================== 'シート名 Private fsSheetName As String 'Initialize済フラグ Private fbInitialize As Boolean Private WithEvents foExcelApplication As Excel.Application '# '# コンストラクタ '# Private Sub Class_Initialize() Set foExcelApplication = Excel.Application Call clearField End Sub '# '# 初期化 '# [戻り値]: '# Boolean '# True: 成功 '# False:失敗 '# [引 数]: '# isSheetName(String) '# Public Function Initialize( _ isSheetName As String _ ) As Boolean Dim lbRet As Boolean '#初期化済でないこと If (fbInitialize <> False) Then lbRet = False '#実行条件適合 Else lbRet = True fsSheetName = isSheetName fbInitialize = True End If Initialize = lbRet End Function '# '# ステータス取得 '# [戻り値]: '# String '# CSV形式でプライベート変数内容を返却 '# [引 数]: '# なし '# Public Function getStatus( _ ) As String Dim lsRet As String lsRet = _ "fbInitialize=" & fbInitialize & _ ",fsSheetName=" & fsSheetName getStatus = lsRet End Function '# '# シート可視不可視 '# [戻り値]: '# Boolean '# True: 成功 '# False:失敗 '# [引 数]: '# ibVisible(Boolean) '# True:可視 '# False:不可視 '# Public Function VisibleSheet( _ ibVisible As Boolean _ ) As Boolean Dim lbRet As Boolean '#初期化済であること If (fbInitialize <> True) Then lbRet = False 'シートが存在していること ElseIf (Me.isCheckFoundSheet() <> True) Then lbRet = False '#実行条件適合 Else lbRet = True If (ibVisible = True) Then Worksheets(fsSheetName).Visible = xlSheetVisible Else Worksheets(fsSheetName).Visible = xlHidden End If End If VisibleSheet = lbRet End Function '# シート存在チェック '# [戻り値]: '# Boolean '# True: 存在していた '# False:存在していない '# [引 数]: '# なし Public Function isCheckFoundSheet( _ ) As Boolean Dim lbRet As Boolean lbRet = False '#初期化済であること If (fbInitialize <> True) Then '#実行条件適合 Else Dim loSheet For Each loSheet In Worksheets If (loSheet.Name = fsSheetName) Then lbRet = True Exit For End If Next End If isCheckFoundSheet = lbRet End Function '# シート追加 '# [戻り値]: '# Boolean '# True: 成功 '# False:失敗 '# [引 数]: '# なし Function inserSheetName( _ ) As Boolean Dim lbRet As Boolean '#初期化済であること If (fbInitialize <> True) Then lbRet = False '既にシートが存在していないこと ElseIf (Me.isCheckFoundSheet() = True) Then lbRet = False '#実行条件適合 Else lbRet = True Dim loSheet As Worksheet Set loSheet = Worksheets.Add() loSheet.Name = fsSheetName End If inserSheetName = lbRet End Function '# シート名変更 '# [戻り値]: '# Boolean '# True: 成功 '# False:失敗 '# [引 数]: '# isSheetNameAft(String) '# 変更後シート名 Function updateSheetName( _ isSheetNameAft As String _ ) As Boolean Dim lbRet As Boolean '#初期化済であること If (fbInitialize <> True) Then lbRet = False '既にシートが存在していること ElseIf (Me.isCheckFoundSheet() = False) Then lbRet = False '#実行条件適合 Else lbRet = True Dim loSheet As Worksheet Set loSheet = Worksheets(fsSheetName) loSheet.Name = isSheetNameAft End If updateSheetName = lbRet End Function '# シート削除 '# [戻り値]: '# Boolean '# True: 成功 '# False:失敗 '# [引 数]: '# なし Function deleteSheetName( _ ) As Boolean Dim lbRet As Boolean '#初期化済であること If (fbInitialize <> True) Then lbRet = False '既にシートが存在していること ElseIf (Me.isCheckFoundSheet() = False) Then lbRet = False '#実行条件適合 Else lbRet = True Dim loSheet As Worksheet Set loSheet = Worksheets(fsSheetName) Application.DisplayAlerts = False loSheet.delete Application.DisplayAlerts = True End If deleteSheetName = 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 = "" End Sub