プログラミング初心者を対象に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でどのように実現するのかを解説する。ぜひ、マスターして各職場で応用してもらいたい。上司からのあなたへの評価が上がること請け合いである。
最初は、シートを追加するところから入ろう。シートを追加するには図1のように画面の左隅下にある[○に+]のアイコンをクリックする。
最初の状態では「Sheet1」だけが追加されている。[○に+]のアイコンをクリックすると、自動的に「Sheet2」「Sheet3」……「Sheet6」と追加されていく(図2)。
追加されたシートの名前を変更するには、例えばSheet1なら「Sheet1」の上でダブルクリックする。すると、編集状態になってシート名が変更できる。この例では各シートを「1年生」〜「6年生」という名称に変更した(図3)。
シートが追加できたところで、次はシートの参照を行う。各学年のシートを選択する処理を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.