VBA(Visual Basic for Applications)でExcelマクロを作っていると、アクティブなシートが、ワークシートなのか、グラフシートなのか判定したいと感じることがあります。
アクティブシートの種別を判別するサンプルマクロ
以下のようにTypeName関数を使うと、アクティブなシートの種別を判定することができます。
Dim type_name As String
Dim msg As String
type_name = TypeName(ActiveSheet)
Select Case type_name
Case "Worksheet"
msg = "ワークシート"
Case "Chart"
msg = "グラフシート"
Case Else
msg = type_name
End Select
MsgBox "アクティブなシートは、『" & msg & "』です。"
End SubTypeName関数の引数に、ActiveSheetプロパティを指定すると、シートの種類に応じて「Worksheet」「Chart」といった文字列が返されるので、その文字列でシート種別を判別できます。
ワークシートかどうかを判定するサンプルマクロ
アクティブなシートが、ワークシートかそうでないかという判定なら以下のマクロでもOKです。
Dim msg As String
If ActiveSheet.Type = xlWorksheet Then
msg = "ワークシートです。"
Else
msg = "ワークシートではありません。"
End If
MsgBox msg
End Subアクティブなシートがワークシートのときは、ActiveSheet.Typeは、Worksheet.Typeと同じことで、
列挙型・XlSheetTypeに定義されている定数・xlWorksheet(-4167)を返してくるので、
それで判定するという方法です。
ちなみに、アクティブシートがグラフシートのときに、ActiveSheet.Typeは、「3」とか「4」とかという数値を返してきます。
グラフシートがアクティブだったときに返される、これらの数値が何なのかについては、近日中に別記事として解説します。解説記事を公開しました。
Home » エクセルマクロ・Excel VBAの使い方 » Sheets・Worksheet » アクティブシートがワークシートかグラフシートかを判定する