こんにちは、フリーランスエンジニア兼ライターのワキザカ サンシロウです。
皆さんは、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
サンプル実行後:
このように、簡単にシート名を変更することができます。シート名の変更については、以下でも詳しく解説しているので、気になる方は見てみてくださいね!
シートの追加方法
次は、シートを新しく追加する方法について解説します。
「Workbook.Add」と書くだけで、簡単にシートを追加することができます。追加したシートは必ずアクティブシートになるので、新しく追加したシートのシート名を変更するサンプルを用意しました。
実行前:
サンプルコード:
Sub Test5() 'シートを追加 Worksheets.Add 'アクティブシートを取得 Dim wsActive As Worksheet Set wsActive = ActiveSheet 'シート名を変更 wsActive.Name = "追加したシート" End Sub
実行後:
シートの先頭・末尾に追加したい場合など、シートを追加する方法については以下でも詳しく解説しているので、気になる方は見てみてくださいね!
シートのコピー方法
次は、シートをコピーする方法について解説します。「シート名.Copy 追加する位置」と書くだけで、簡単にシートをコピーすることができます。
「追加する位置」はBeforeまたはAfterを指定することができ、それぞれ指定したシートの前、シートの後にシートを追加することができます。。
コピーしたシートは必ずアクティブシートになるので、コピー後にシート名を変更するサンプルを用意しました。
実行前:
サンプルコード:
Sub Test6() 'アクティブシートを取得 Dim wsActive As Worksheet Set wsActive = ActiveSheet 'アクティブシートをコピー wsActive.Copy after:=wsActive 'シート名を変更 ActiveSheet.Name = "コピーしたシート" End Sub
実行後:
シートコピーについての詳しい使い方は以下で詳しく解説しているので、気になる方は見てみてくださいね!
シートの削除方法
次は、シートを削除する方法について解説します。「シート名.Delete」と書くだけで、簡単にシートを削除することができます。
アクティブシートを削除するサンプルを用意しました。実行前:
サンプルコード:
Sub Test7() 'アクティブシートを取得 Dim wsActive As Worksheet Set wsActive = ActiveSheet 'アクティブシートを削除 Application.DisplayAlerts = False wsActive.Delete Application.DisplayAlerts = True End Sub
実行後:
シート削除については以下で詳しく解説しているので、気になる方は見てみてくださいね!
シート内のセル操作方法
ここまでアクティブシートの操作方法についてシート操作をメインに解説しました。シート操作以外にも、セル操作を覚えておくと便利なのでまとめて紹介します!
セルに値を書き込む場合は、RangeメソッドまたはCellsメソッドを使います。
Rangeメソッドはセル名、Cellsメソッドは行番号・列番号でセルを指定して値を書き込みます。
詳しい使い方については以下で解説しているので、気になる方は見てみてくださいね!
シート内の行操作方法
セル操作以外にも、行を操作する方法を合わせて覚えておくと便利です。
行を挿入する場合はInsertメソッド、コピーする場合はCopyメソッド、削除する場合はDeleteメソッドを使います。
それぞれ以下で詳しく解説しているので、気になる方は見てみてくださいね!
まとめ
今回は、アクティブシートを取得・操作する方法について徹底的に解説しました!
VBAではシートを操作することが圧倒的に多いです。
今回解説した方法はどれも簡単なので、ぜひ使ってみてくださいね!