Home » エクセルマクロ・Excel VBAの使い方 » Sheets・Worksheet » ActiveSheetを変更するには

動作検証バージョン:64bit Windows 10 Pro + 32bit Excel(バージョン2003 ビルド12624.20466 Microsoft Store)

「activesheet 変更する」
「excel vba activesheet 変更」
といった検索キーワードで、時折アクセスがあります。

Excel VBAでアクティブなシートを変更するには、どのようなコードを書けばいいのかを探していらしたのでしょうか。

[スポンサードリンク]

Selectメソッドでアクティブなシートを変更できる

拙著『いちばんやさしいExcel VBAの教本』のChapter 11でもご紹介している、Worksheetオブジェクト(あるいはChartオブジェクト)のSelectメソッドを使えば、アクティブなシートを変更できます。
Sub ActiveSheetを変更する()
 Sheets(1).Select
End Sub

上記のSubプロシージャを実行すると、アクティブなブックの一番左のシートが選択されます。

複数シート選択時にはActivateメソッド

複数のシートが選択されているときにアクティブシートを変更したい場合には、Selectメソッドではダメです。複数シートの選択状態が解除され、1枚のシートのみ選択されてしまいます。

こういう場合にはActivateメソッドを利用します。Activateメソッドなら、複数シートの選択状態は解除されずにアクティブなシートが変更されます。

非表示シートがあるときにActivateメソッドは要注意

であるならば、Activateメソッドをいつでも使えばイイのではないか、と考える方がいらっしゃるかもしれませんが、ダメです。

非表示シートが存在するときにActivateメソッドを使うと、期待していたのとは別のシートがアクティブになるためです。Activateメソッドの場合、非表示になっていない別のシートがアクティブになってしまうのです。

先にご紹介したSelectメソッドの場合、非表示シートであれば、正しく実行時エラーが発生してくれます。

非表示を考慮してアクティブシートを変更する

If文やOn Error文で、非表示シートだった場合の処理を入れた上で、Selectメソッドを使うことをおすすめします。

Sub ActiveSheetを変更する_If文で非表示シートに対応()
 With Sheets(1)
  If .Visible = xlSheetVisible Then
   .Select
  Else
   MsgBox "非表示シートはアクティブにできません。"
  End If
 End With
End Sub


Sub ActiveSheetを変更する_OnError文で非表示シートに対応()
On Error GoTo ErrHandl
 Sheets(1).Select
Exit Sub
ErrHandl:
 MsgBox "非表示シートはアクティブにできません。"
End Sub
[スポンサードリンク]

Home » エクセルマクロ・Excel VBAの使い方 » Sheets・Worksheet » ActiveSheetを変更するには

TrackBack:0

TrackBack URL

Home » エクセルマクロ・Excel VBAの使い方 » Sheets・Worksheet » ActiveSheetを変更するには

「Sheets・Worksheet」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.