「vba グラフシートを順番に見る」
という検索で、このサイト・インストラクターのネタ帳へのアクセスがありました。
複数のワークシートと複数のグラフシートが混在しているブックで、VBA(Visual Basic for Applications)を使って、グラフシートだけを順番にアクティブにしたい・選択したいというニーズは確かにありそうです。そんなマクロを作ってみました。
次のグラフシートを選択するサンプルマクロ
以下のようなマクロで、次のグラフシートを選択することができます。
Dim flg As Boolean: flg = False ' グラフシートが選択されたらTrue
Dim i As Long
If Charts.Count = 0 Then Exit Sub
For i = ActiveSheet.Index + 1 To Sheets.Count
If TypeName(Sheets(i)) = "Chart" Then
Sheets(i).Select
flg = True
Exit For
End If
Next i
If flg = False Then Charts(1).Select
End Sub最後のグラフシートや、それ以降のワークシートがアクティブな状態で上記のマクロを実行した場合は、先頭のグラフシートが選択されます。
サンプルマクロの解説
現在のシートの右隣のシートからFor~Nextループを回して、
For i = ActiveSheet.Index + 1 To Sheets.Count
もしもグラフシートだった場合に、
If TypeName(Sheets(i)) = "Chart" Then
そのシートを選択して、フラグをTrueにして、For~Nextループを抜けています。
Sheets(i).Select
flg = True
Exit For
最後のグラフシート以降のシートが選択されていた場合、フラグがFalseのまま先のFor~Nextループが終了するので、その場合に先頭のグラフシートを選択するようにしています。
If flg = False Then Charts(1).Select
この先頭のグラフシートを選択する処理があることなどから、最初にグラフシートがなければプロシージャを終了する処理を入れています。
If Charts.Count = 0 Then Exit Sub
Home » エクセルマクロ・Excel VBAの使い方 » グラフ・Chart » VBAで次のグラフシートを選択する