プログラミング初心者を対象に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.
HTML5+UX 記事ランキング