VBA でシートが存在するかどうかを確認する
Excel で VBA を使用してシートが存在するかどうかを確認する方法を紹介します。
VBA でシートが存在するか確認する
複数のシートで作業しているときに、重複するシートがいくつかある場合や、重複するシートを作成しないようにする場合があります。この目的のために、VBA を使用して、シートを作成する可能性のある同じ名前のシートがあるかどうかを確認できます。
シートが存在するかどうかを確認するには、ワークブックの各シートと一緒にループを作成し、作成した名前を比較する必要があります。2つのループを使用します。1つは For each loop
になり、2つ目は If Else
ステートメントになります。
最初に、2つの変数を作成します。1つはワークシートを保存し、もう 1つは重複を探すシートの名前を保存するか、この名前のシートが存在するかどうかを確認します。for
ループを使用してフォルダ内のすべてのファイルを調べ、if-else
ステートメントを使用して、シートの名前が他のシートと同じ名前で存在するかどうかを確認します。
同じ名前のファイルが存在する場合は、シートが存在することを示すメッセージボックスが表示されます。それ以外の場合は、シートが存在しないことを示すメッセージボックスが表示されます。
コード:
#VBA
Sub sheetCheck()
Dim sheet As Worksheet
Dim Name As String
Name = "Sheet1"
For Each sheet In ThisWorkbook.Worksheets
If sheet.Name = Name Then
MsgBox "Yes! " & Name & " is there in the workbook."
Exit Sub
End If
Next sheet
MsgBox "No! " & Name & "is not there in the workbook."
End Sub
出力:
sheet1
を検索したところ、同じ名前のシートが既に存在するという肯定的な反応がありました。
VBA のクローズドワークブックにシートが存在するかどうかを確認する
閉じられている、またはすでに作業を行っている Excel ファイルのシートを確認したい場合もあります。上記の例で使用したように、VBA を使用してファイルを開き、If else
ステートメントを使用して For each
ループを開くことにより、閉じた Excel ファイルのシートを確認することもできます。
閉じた Excel ファイルでシートを確認してみましょう。
コード:
#VBA
Sub checkSheet()
Dim book As Workbook
Dim sheet As Worksheet
Dim Name As String
Name = "Sheet1"
Application.ScreenUpdating = False
Set book = Workbooks.Open _
("C:\Users\Hp9470\Documents\Book2.xlsx")
For Each sheet In book.Worksheets
If sheet.Name = Name Then
book.Close SaveChanges:=True
MsgBox "Yes! Sheet Exists"
Exit Sub
End If
Next sheet
Application.ScreenUpdating = False
MsgBox "No! Sheet doesn't exists"
End Sub
出力:
このシートは、open 関数を使用してアクセスした closedexcel ファイルに存在します。このようにして、名前の方法を使用して、シートに関する開いているファイルと閉じているファイルの両方を確認できます。