【ExcelVBA入門】アクティブシートの取得・操作方法について徹底解説!

こんにちは、フリーランスエンジニア兼ライターのワキザカ サンシロウです。

皆さんは、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メソッドは行番号・列番号でセルを指定して値を書き込みます。

詳しい使い方については以下で解説しているので、気になる方は見てみてくださいね!


【VBA入門】Cellsでセルを指定(変数などRangeとの使い分けも解説)
更新日:2024年3月29日

シート内の行操作方法

セル操作以外にも、行を操作する方法を合わせて覚えておくと便利です。

行を挿入する場合はInsertメソッド、コピーする場合はCopyメソッド、削除する場合はDeleteメソッドを使います。

それぞれ以下で詳しく解説しているので、気になる方は見てみてくださいね!


【ExcelVBA入門】行をコピーするためのCopyメソッドの使い方とは
更新日:2024年3月1日

【VBA入門】行・列の削除とクリアをする方法
更新日:2024年3月29日

まとめ

今回は、アクティブシートを取得・操作する方法について徹底的に解説しました!

VBAではシートを操作することが圧倒的に多いです。

今回解説した方法はどれも簡単なので、ぜひ使ってみてくださいね!

この記事を書いた人

北海道出身の30歳で、フリーランスエンジニア兼テックライターとして活動中。新卒入社したメーカー系のIT企業で、システムエンジニアとして約5年勤務。

Webアプリ、業務アプリ開発において、要件定義 ~ 運用保守まで様々な経験あり。また3歳の娘がいる1児のパパで、日々娘との時間を確保するために仕事を頑張っています!
侍エンジニアでは、【誰でもわかるレベルのわかりやすさ】を意識して、記事を執筆中。

目次