自分方位研究所

日々の活動記録

Excel VBA「ユーザー定義関数」の作成 (シート名の存在確認)

特定のシートを参照したいとき、いきなり、そのシートを名指しで参照しても
存在しなければエラーになりますので、事前に確認しようというわけです。
指定したシートが存在するか確認するユーザ定義関数 FNC_SheetCheck を作成しました。
引数としてワークブックオブジェクトと、確認するシート名を指定します。
ワークブックを指定しないと、現在アクティブとなっているブック内を調べることになりますので、調査対象のブックも指定した方がよかろうということで引数にしています。

動作確認として、プロシージャ TestSheetCheck を起動すると、FNC_SheetCheck を呼び出し、アクティブブック内にシート名"Sheet1"を捜して、結果をメッセージボックスに表示します。

'--------------------------------------------------
Sub TestSheetCheck()

'ユーザ定義関数「FNC_SheetCheck」の動作確認用
'アクティブブック内にシート名"Sheet1"があるか確認します。

Dim objBOOK As Workbook
Dim SheetNAME As String
Dim msg As String

Set objBOOK = ActiveWorkbook
SheetNAME = "Sheet1"

If FNC_SheetCheck(objBOOK, SheetNAME) Then
     msg = " は、存在します。"
Else
     msg = " は、存在しません。"
End If

MsgBox objBOOK.Name & " に " & SheetNAME & msg

Set objBOOK = Nothing

End Sub

'--------------------------------------------------

Function FNC_SheetCheck(objBOOK As Workbook, SheetNAME As String) As Boolean


'ワークブックオブジェクト(objBOOK)内に
'シート名(SheetNAME)があるか確認します。
'シート名の あり = true / 無し= false を返します。


Dim s As Byte

FNC_SheetCheck = False

For s = 1 To objBOOK.Worksheets.Count
     If objBOOK.Worksheets(s).Name = SheetNAME Then
          FNC_SheetCheck = True
          Exit For
     End If
Next s

End Function

'--------------------------------------------------