【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

サンプル実行後:

このように、簡単にシート名を変更することができます。シート名の変更については、以下でも詳しく解説しているので、気になる方は見てみてくださいね!

【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入門】Cellsでセルを指定(変数などRangeとの使い分けも解説)
更新日 : 2019年10月1日

シート内の行操作方法

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

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

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


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

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

まとめ

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

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

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

LINEで送る
Pocket

無料でSEからWebエンジニアへ転職しませんか?



侍エンジニア塾では、完全未経験の方から現在SEだけどプログラミングはやっていないという経験者まで、幅広い方々の人生を好転させるプログラミング指導を行ってきました。SEの方とお話していくなかで、

  • システムエンジニアという職業だけどコードが書けない
  • 事務作業が多くスキルがないため将来が不安
  • スクールに通うと完全未経験者と同じスタートになるからレベルが合わない
という、すでに知識があるSEならではのお悩みがあることに気づきました。そんな方におすすめなのが、弊社の「転職コース 」です。

弊社では、マンツーマンでレッスンを行いますので、現在お持ちの知識レベルからカリキュラムを作成いたします。さらにこちらの転職コースは無料で受講を始められて転職成功でそのまま卒業できるというとてもお得なコースとなっています。

既に知識のあるSEといっても転職は年齢が若いほど受かりやすいため、まずは無料体験レッスンで今の現状や理想の働き方について一緒に考えていきましょう。

まずは無料体験レッスンを予約する

書いた人

Sanshiro Wakizaka

Sanshiro Wakizaka

新卒入社したメーカー系のIT企業で、システムエンジニアとして約5年勤務。
Webアプリ、業務アプリ開発において、要件定義、設計、インフラ、製造、テスト、運用保守など、様々な経験あり。
また、侍ブログ編集部として、これまでに200記事以上の記事を執筆。
現在はフリーランスエンジニア兼テックライターとして活動中。

おすすめコンテンツ

あなたにぴったりなプログラミング学習プランを無料で診断!

プログラミング学習の効率を劇的に上げる学習メソッドを解説