LoginSignup
0
1

More than 5 years have passed since last update.

Excel VBA User Function Exist Worksheet /Sheet 指定された名前のワークシートがあるか判定する関数

Posted at

Sheet か Worksheetか

Sheetの中にWorksheetは含まれます。
このためSheetにするとWorksheetに含まれないシートがあればTrueになります。
このため広くSheetsで判定する関数とWorksheetのみで判定する関数を2つ作りました。
グラフ、Excel5.0ダイアログシートなどがある場合はこちらを使います。

複数のワークブックを開いているときにActiveではないWorkBookを指定できる

Sheet/Worksheetの有無を判定するのは多くの場合複数のブックを開いています。
このため、複数のブックのうちどのブックかを選択して判定するようにしました。
グラフ等を使わない場合は、WorkSheetExistsだけでいいと思います。

使用するところ

たとえば複数のブックを開いてワークシートを複写したとき、複写が完了しているかを判定できます。
普通は複数のWorkBookを開いている前提なんてしていないですからね。

豆知識

Workbookを1つしか開いていないときはThisWorkbookでもActiveWorkBookでも同じ結果になります。

コード


Function WorkSheetExists(objWorkbook As Excel.Workbook, strWorksheetName As String) As Boolean
'For Excel VBA
' Dim bl as boolean
' bl = WorkSheetExists(ThisWorkbook, "Sheet20")
' 指定されたWorkBookに指定された名前のWorksheet が存在するか
Dim wss As Worksheets, shs As Sheets
Dim ws As Excel.Worksheet
Dim bl As Boolean: bl = False
On Error GoTo Err_Handle
Set wss = objWorkbook.Worksheets
For Each ws In wss
If ws.Name = strWorksheetName Then bl = True: Exit For
Next
WorksheetExists = bl
Exit Function
Err_Handle:
If Err.Number <> 0 Then Debug.Print "WorksheetExists error occur. " & Err.Number, Err.Description: Err.Clear
WorksheetExists = False
End Function

Function ExcelSheetExists(objWorkbook As Excel.Workbook, strWorksheetName As String) As Boolean
'For Excel VBA
' Dim bl as boolean
' bl = ExcelSheetExists(ThisWorkbook, "Sheet20")
' 指定されたWorkBookに指定された名前のSheet が存在するか
Dim wb As Excel.Workbook
Dim wss As Worksheets, shs As Sheets
Dim ws
Dim bl As Boolean: bl = False
On Error GoTo Err_Handle
Set wb = objWorkbook
'Set wss = wb.Worksheets
Set shs = wb.Sheets
For Each ws In shs
If ws.Name = strWorksheetName Then bl = True: Exit For
Next
WorksheetExists = bl
Exit Function
Err_Handle:
If Err.Number <> 0 Then Debug.Print "WorksheetExists error occur. " & Err.Number, Err.Description: Err.Clear
WorksheetExists = False
End Function
0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1