こんにちは、フリーランスエンジニア兼ライターのワキザカ サンシロウです。
皆さんは、VBAでアクティブシートを操作する方法を知っていますか?
選択しているシートの中で操作をしたいケースはよくありますよね。そこで今回は、
- アクティブなシートを取得する方法
- アクティブなシートを操作する方法
といった基礎的なことから、
- シートを追加・コピー・削除する方法
- シート上のデータを操作する方法
といった応用的な方法まで、徹底的に解説します!
アクティブなシートを取得する方法
はじめに、アクティシートを取得する方法について解説します。
アクティブシートは、次のように書くことで取得できます。
Dim 変数名 as Worksheet
Set 変数名 = ActiveSheet
Worksheet型の変数にActiceSheetの値を変数に入れることで、アクティブシートを操作することができます。
ただ、これだけではアクティブシートが正しく取得できているか、よくわからないですよね。そんな時はシート名を取得して確認するのがおすすめです!
「シート.Name」で簡単に取得することができます。サンプルコード:
Sub Test()
'アクティブシートを取得
Dim wsActive As Worksheet
wsActive = ActiveSheet
'シート名をメッセージで確認
MsgBox "アクティブシートの名前は" & wsActive.Name & "です"
End Sub
実行結果:
![]()
このように、簡単にアクティブシートを取得することができます。
アクティブなシートを操作する方法
次に、アクティブシートを操作する方法について解説します。
アクティブに変更
最初は、指定したシートをアクティブシートに変える方法です。
「Worksheets(シート名).Activate」と書くだけで、簡単にシートをアクティブにすることができます。
実行前のシート:
![]()
サンプルコード:
Sub Test3()
'現在のアクティブシートを取得
Dim wsActiveOld As Worksheet
Set wsActiveOld = ActiveSheet
'アクティブシートを変更
Worksheets("Sheet2").Activate
End Sub
実行後のシート:
![]()
このように、簡単にアクティブシートを変更することができます。
シート名の変更
次に、シート名を変える方法について解説します。シート名は「ワークシート.Name」で取得できるのですが、そのまま値を入れて変更することができます。
サンプル実行前:
![]()
サンプルコード:
Sub Test4()
'現在のアクティブシートを取得
Dim wsActive As Worksheet
Set wsActive = ActiveSheet
'シート名を変更
wsActive.Name = "データ一覧"
End Sub
サンプル実行後:
![]()
このように、簡単にシート名を変更することができます。シート名の変更については、以下でも詳しく解説しているので、気になる方は見てみてくださいね!
【VBA入門】Nameでシート名(アクティブシート)を取得・変更する方法
更新日 : 2019年5月4日
シートの追加方法
次は、シートを新しく追加する方法について解説します。
「Workbook.Add」と書くだけで、簡単にシートを追加することができます。追加したシートは必ずアクティブシートになるので、新しく追加したシートのシート名を変更するサンプルを用意しました。
実行前:
![]()
サンプルコード:
Sub Test5()
'シートを追加
Worksheets.Add
'アクティブシートを取得
Dim wsActive As Worksheet
Set wsActive = ActiveSheet
'シート名を変更
wsActive.Name = "追加したシート"
End Sub
実行後:
![]()
シートの先頭・末尾に追加したい場合など、シートを追加する方法については以下でも詳しく解説しているので、気になる方は見てみてくださいね!
【ExcelVBA入門】シートを追加するためのAddメソッドの使い方とは
更新日 : 2019年8月30日
シートのコピー方法
次は、シートをコピーする方法について解説します。「シート名.Copy 追加する位置」と書くだけで、簡単にシートをコピーすることができます。
「追加する位置」はBeforeまたはAfterを指定することができ、それぞれ指定したシートの前、シートの後にシートを追加することができます。。
コピーしたシートは必ずアクティブシートになるので、コピー後にシート名を変更するサンプルを用意しました。
実行前:
![]()
サンプルコード:
Sub Test6()
'アクティブシートを取得
Dim wsActive As Worksheet
Set wsActive = ActiveSheet
'アクティブシートをコピー
wsActive.Copy after:=wsActive
'シート名を変更
ActiveSheet.Name = "コピーしたシート"
End Sub
実行後:
![]()
シートコピーについての詳しい使い方は以下で詳しく解説しているので、気になる方は見てみてくださいね!
【VBA入門】シートのコピーと移動(複数コピーや名前の変更も解説)
更新日 : 2019年3月29日
シートの削除方法
次は、シートを削除する方法について解説します。「シート名.Delete」と書くだけで、簡単にシートを削除することができます。
アクティブシートを削除するサンプルを用意しました。実行前:
![]()
サンプルコード:
Sub Test7()
'アクティブシートを取得
Dim wsActive As Worksheet
Set wsActive = ActiveSheet
'アクティブシートを削除
Application.DisplayAlerts = False
wsActive.Delete
Application.DisplayAlerts = True
End Sub
実行後:
![]()
シート削除については以下で詳しく解説しているので、気になる方は見てみてくださいね!
【VBA入門】Deleteでシートを削除(複数シートの削除も解説)
更新日 : 2019年4月30日
シート内のセル操作方法
ここまでアクティブシートの操作方法についてシート操作をメインに解説しました。シート操作以外にも、セル操作を覚えておくと便利なのでまとめて紹介します!
セルに値を書き込む場合は、RangeメソッドまたはCellsメソッドを使います。
Rangeメソッドはセル名、Cellsメソッドは行番号・列番号でセルを指定して値を書き込みます。
詳しい使い方については以下で解説しているので、気になる方は見てみてくださいね!
【VBA入門】Rangeでセルの範囲指定(Cellsとの使い分けも解説)
更新日 : 2019年9月26日
【VBA入門】Cellsでセルを指定(変数などRangeとの使い分けも解説)
更新日 : 2020年3月24日
シート内の行操作方法
セル操作以外にも、行を操作する方法を合わせて覚えておくと便利です。
行を挿入する場合はInsertメソッド、コピーする場合はCopyメソッド、削除する場合はDeleteメソッドを使います。
それぞれ以下で詳しく解説しているので、気になる方は見てみてくださいね!
【ExcelVBA入門】行を挿入するためのInsertメソッドの使い方とは
更新日 : 2019年4月5日
【ExcelVBA入門】行をコピーするためのCopyメソッドの使い方とは
更新日 : 2019年4月2日
【VBA入門】行・列の削除とクリアをする方法
更新日 : 2019年4月25日
まとめ
今回は、アクティブシートを取得・操作する方法について徹底的に解説しました!
VBAではシートを操作することが圧倒的に多いです。
今回解説した方法はどれも簡単なので、ぜひ使ってみてくださいね!