Excelシートの参照、移動、コピー、追加、削除とイベント処理:Excelマクロ/VBAで始める業務自動化プログラミング入門(9)(1/4 ページ)
プログラミング初心者を対象にExcelマクロ/VBAを使った業務自動化プログラムの作り方を一から解説します。今回は、ワークシート操作のメソッド、Move、Copy、Add、Deleteに加えて、Array関数による複数ワークシートの参照、イベント処理やFunctionプロシージャなどの使い方について【Windows 10、Excel 2016に対応】。
シート操作を覚えてデータ管理手法に幅を持たせよう
プログラミング初心者を対象にExcelマクロ/VBAを使った業務自動化プログラムの作り方を一から解説する本連載「Excelマクロ/VBAで始める業務自動化プログラミング入門」。今回はシート(ワークシート)の操作について解説する。連載第4回の「Excelの基本オブジェクト『セル』の参照、移動、コピー、選択、挿入、削除」では、Excelのセルについてさまざまな操作を解説したが、Excelを起動して最初に目にする「セル」が無数に集まった画面が「シート」だ。さらに、「シート」が集まったものを「ブック」という。
通常Excelを使用する場合、1シートだけ使うということはほとんどない。前回までの連載でも、シートの操作については時折触れてきた。
例えば、複数のシートを追加して、「1月期の売上」「2月期の売上」……「12月期の売上」というように、各月の売上をシート別に管理することはよくある。このように、別なシートのデータを、「集計」というシートを用意して、そこで一気に集計させることもできる。
シートの操作を覚えると、業務効率化の手法に幅ができ、データの管理がしやすくなる利点がある。今回は、シートの操作をVBAでどのように実現するのかを解説する。ぜひ、マスターして各職場で応用してもらいたい。上司からのあなたへの評価が上がること請け合いである。
手動でExcelのシートを追加し、名前を変更する
最初は、シートを追加するところから入ろう。シートを追加するには図1のように画面の左隅下にある[○に+]のアイコンをクリックする。
最初の状態では「Sheet1」だけが追加されている。[○に+]のアイコンをクリックすると、自動的に「Sheet2」「Sheet3」……「Sheet6」と追加されていく(図2)。
追加されたシートの名前を変更するには、例えばSheet1なら「Sheet1」の上でダブルクリックする。すると、編集状態になってシート名が変更できる。この例では各シートを「1年生」〜「6年生」という名称に変更した(図3)。
Excelシートの参照は2つの方法がある
シートが追加できたところで、次はシートの参照を行う。各学年のシートを選択する処理をVBAで書いてみよう。
その前に、図3の状態から「1年生」を選択して、マウスの右クリックで表示されるメニューから、[挿入]を選択する。「挿入」画面が表示されるので、[標準]タブから「ワークシート」を選択して[OK]ボタンをクリックする。
すると、「1年生」シートの前に「Sheet7」が追加される。このSheet7を「メニュー」という項目名に変更する(図4)。
次に、「メニュー」シートを選択して、「メニュー」シート上にExcelメニューの[挿入]→[図形]と選択して、「角丸四角形」を6個配置して、名前に「1年生名簿」〜「6年生名簿」としておく。図5のようなメニューを作っておく。
「インデックス番号」で指定
VBEを起動してリスト1のマクロを記述しよう。各学年のシートを選択するにはSelectメソッドを使用するだけだ。この各マクロをボタンに関連付けるだけで、クリックしたボタンのシートが選択される。
Option Explicit Sub 一年生シートの選択() Worksheets(2).Select End Sub Sub 二年生シートの選択() Worksheets(3).Select End Sub Sub 三年生シートの選択() Worksheets(4).Select End Sub Sub 四年生シートの選択() Worksheets(5).Select End Sub Sub 五年生シートの選択() Worksheets(6).Select End Sub Sub 六年生シートの選択() Worksheets(7).Select End Sub Sub メニューに戻る() Worksheets(1).Select End Sub
Worksheetsのコレクションにインデックス番号として、シートの番号を指定し、Selectメソッドで選択状態にする。「Worksheets(1)」は「メニュー」シートになるので、「1学年」シートは「Worksheets(2)」になり、Indexは1ずつずれる。
「シート名」で指定
また、Indexで指定しないで「シート名」で指定することもできる。例えばメニューに戻るSubプロシージャは下記リスト2のように書くこともできる。
Sub メニューに戻る() Worksheets("メニュー").Select End Sub
Indexの代わりに「メニュー」というシート名を直接指定している。
「Subメニューに戻る」プロシージャは、各学年のシートが選択されたとき、そのシートからメニューに戻れるように「メニューに戻る」ボタンに追加するプロシージャだ。
実行結果
これらのマクロを「メニュー」シートに配置したボタンと関連付ける。また選択されたシートには「メニューに戻る」ボタンに「メニューに戻る」マクロを関連付ける。
マクロを関連付ける方法は連載で既に何度も出てきているので、もうご存じだと判断して、説明は省略する。
実行すると、図6のようになる。
次ページでは、複数のワークシートを参照してみよう。
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
- Excelマクロ/VBAリファレンス用途別・キーワード別一覧超まとめ
- ピボットテーブルとは何か──「そもそも、何をする機能か」を理解する
Excelを通じて「ピボットテーブル」の基礎を学び、データ分析を実践するまでを習得する本連載。初回はピボットテーブルの基礎と、「どんなことができるのか」を解説する。 - どんなビジネスにも欠かせないリレーショナルデータベースの基礎知識と作り方――テーブル、レコード、フィールド、主キーとは
Accessを通じて、初心者がリレーショナルデータベースやSQLの基本を学び、データベースを使った簡単なシステムの作り方を習得する本連載。初回はデータベースの基本を理解し、Accessを使い始めてみよう。