連載
» 2016年08月31日 05時00分 UPDATE

Excelマクロ/VBAで始める業務自動化プログラミング入門(9):Excelシートの参照、移動、コピー、追加、削除とイベント処理 (1/4)

プログラミング初心者を対象にExcelマクロ/VBAを使った業務自動化プログラムの作り方を一から解説します。今回は、ワークシート操作のメソッド、Move、Copy、Add、Deleteに加えて、Array関数による複数ワークシートの参照、イベント処理やFunctionプロシージャなどの使い方について【Windows 10、Excel 2016に対応】。

[薬師寺国安,ITmedia]

シート操作を覚えてデータ管理手法に幅を持たせよう

 プログラミング初心者を対象にExcelマクロ/VBAを使った業務自動化プログラムの作り方を一から解説する本連載「Excelマクロ/VBAで始める業務自動化プログラミング入門」。今回はシート(ワークシート)の操作について解説する。連載第4回の「Excelの基本オブジェクト『セル』の参照、移動、コピー、選択、挿入、削除」では、Excelのセルについてさまざまな操作を解説したが、Excelを起動して最初に目にする「セル」が無数に集まった画面が「シート」だ。さらに、「シート」が集まったものを「ブック」という。

 通常Excelを使用する場合、1シートだけ使うということはほとんどない。前回までの連載でも、シートの操作については時折触れてきた。

 例えば、複数のシートを追加して、「1月期の売上」「2月期の売上」……「12月期の売上」というように、各月の売上をシート別に管理することはよくある。このように、別なシートのデータを、「集計」というシートを用意して、そこで一気に集計させることもできる。

 シートの操作を覚えると、業務効率化の手法に幅ができ、データの管理がしやすくなる利点がある。今回は、シートの操作をVBAでどのように実現するのかを解説する。ぜひ、マスターして各職場で応用してもらいたい。上司からのあなたへの評価が上がること請け合いである。

手動でExcelのシートを追加し、名前を変更する

 最初は、シートを追加するところから入ろう。シートを追加するには図1のように画面の左隅下にある[○に+]のアイコンをクリックする。

図1 Excelを起動すると最初は「Sheet1」だけが追加されている

 最初の状態では「Sheet1」だけが追加されている。[○に+]のアイコンをクリックすると、自動的に「Sheet2」「Sheet3」……「Sheet6」と追加されていく(図2)。

図2 [○に+]のアイコンクリックでシートが追加される

 追加されたシートの名前を変更するには、例えばSheet1なら「Sheet1」の上でダブルクリックする。すると、編集状態になってシート名が変更できる。この例では各シートを「1年生」〜「6年生」という名称に変更した(図3)。

図3 シート名を変更した

Excelシートの参照は2つの方法がある

 シートが追加できたところで、次はシートの参照を行う。各学年のシートを選択する処理をVBAで書いてみよう。

 その前に、図3の状態から「1年生」を選択して、マウスの右クリックで表示されるメニューから、[挿入]を選択する。「挿入」画面が表示されるので、[標準]タブから「ワークシート」を選択して[OK]ボタンをクリックする。

 すると、「1年生」シートの前に「Sheet7」が追加される。このSheet7を「メニュー」という項目名に変更する(図4)。

図4 「1年生」の前にSheet7を追加し、名前を「メニュー」とした

 次に、「メニュー」シートを選択して、「メニュー」シート上にExcelメニューの[挿入]→[図形]と選択して、「角丸四角形」を6個配置して、名前に「1年生名簿」〜「6年生名簿」としておく。図5のようなメニューを作っておく。

図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
リスト1 各学年のシートを選択する

 Worksheetsのコレクションにインデックス番号として、シートの番号を指定し、Selectメソッドで選択状態にする。「Worksheets(1)」は「メニュー」シートになるので、「1学年」シートは「Worksheets(2)」になり、Indexは1ずつずれる。

「シート名」で指定

 また、Indexで指定しないで「シート名」で指定することもできる。例えばメニューに戻るSubプロシージャは下記リスト2のように書くこともできる。

Sub メニューに戻る()
  Worksheets("メニュー").Select
End Sub
リスト2 Index番号の代わりにシート名を指定

 Indexの代わりに「メニュー」というシート名を直接指定している。

 「Subメニューに戻る」プロシージャは、各学年のシートが選択されたとき、そのシートからメニューに戻れるように「メニューに戻る」ボタンに追加するプロシージャだ。

実行結果

 これらのマクロを「メニュー」シートに配置したボタンと関連付ける。また選択されたシートには「メニューに戻る」ボタンに「メニューに戻る」マクロを関連付ける。

 マクロを関連付ける方法は連載で既に何度も出てきているので、もうご存じだと判断して、説明は省略する。

 実行すると、図6のようになる。

図6 メニュー画面からボタンをクリックして各学年のシートを選択し(左側)、「メニューに戻る」ボタンでメニューに戻る(右側)

 次ページでは、複数のワークシートを参照してみよう。

       1|2|3|4 次のページへ

Copyright© 2017 ITmedia, Inc. All Rights Reserved.

@IT Special

- PR -

TechTargetジャパン

この記事に関連するホワイトペーパー

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。