Excel操作で日が暮れないようにデータ削除処理とメニュー画面を作る&MsgBox関数の使い方:Excelマクロ/VBAで始める業務自動化プログラミング入門(15)(3/3 ページ)
プログラミング初心者を対象にExcelマクロ/VBAを使った業務自動化プログラムの作り方を一から解説します。応用編の3回目は、不要になったデータを見つけて自動的に削除するマクロの書き方を紹介。MsgBox関数の使い方も引数や戻り値の表とともに解説します【Windows 10、Excel 2016に対応】。
タイトルの作成
次にタイトルを設定する。「C3」に「個人情報管理」と入力し、「C3」から「G3」までを選択して、マウスの右クリックで表示させる「セルの書式設定」を選択する。
「配置」タブを選択して、「文字の制御」から「セルを結合する」にチェックを入れて[OK]ボタンをクリックする(図11)。
C3〜G3までのセルが結合されて表示される。結合されたセルを選択して、Excelメニューから[書体]に「游ゴシック」、[文字サイズ]に「24」、太字とし、[背景色]を「赤」で塗りつぶし、[文字色]を「黄色」、文字を「中央揃え」と指定する(図12)。
枠線を消してアプリっぽくする
これでメニュー画面は完成した。しかし図4で紹介したメニューと、どこか雰囲気が違っているに気付かれるだろう。図4では、シート内のセルの枠線が無いのだ。このセルの枠線を消すには、Excelメニューの[表示]から[目盛線]のチェックを外すと、シートの中から枠線が消える(図13)。これで、がぜんアプリケーションのメニューらしく見える。
各メニューにマクロを関連付ける
では、最後の仕上げとして、各メニューにマクロを関連付ける。今回までの内容では、「印刷設定」と「印刷またはPDF化」のマクロはまだ作成していないため、上3つのメニューにマクロを登録する。一例として「データ入力」にマクロを登録する方法を解説する。
まず「データ入力」を選択し、マウスの右クリックで表示されるメニューから[マクロの登録]を選択する。すると図14のように[マクロ登録]の画面が表示されるので、「データ入力表示」を選択して[OK]ボタンをクリックする。
同様に、「データ検索」には「データ検索表示」、「データ削除」には「データ削除表示」を選択する。
これで、上から3つのメニューにはマクロが登録された。では次に、メニューを選択した時に、該当するフォームを開くマクロを記述する。
メニュー画面のマクロ
Excelメニューの[開発]タブをクリックして[Visual Basic]を選択する。表示されるVBEメニューの[挿入]→[標準モジュール]を選択する。プロジェクト内に「標準モジュール」フォルダが追加され、展開すると「Module1」が表示される。このModule1の中にマクロを記述する。
マクロの記述方法については、連載第2回「初心者でも図解で分かる! VBEの基本的な使い方とVBAプログラムの基礎文法」の「Subプロシージャの入力」で解説しているので、そちらを参照してほしい。
記述するコードはリスト2のようになる。
Option Explicit Public flag As Boolean Sub データ入力表示() UserForm1.Show End Sub Sub データ検索表示() flag = False UserForm2.Show End Sub Sub データ削除表示() flag = True UserForm2.Show End Sub
前回も解説したように、最初にブール型のパブリック変数「flag」を宣言している(2行目)。この変数はパブリック変数であるから、どこからでも参照できる。先に解説したように、「データ検索」と「データ削除」は同じフォームを使用していて、「データ削除」の場合にのみ「削除」ボタンを表示させるようにしていた。
このプロシージャを見ても分かるように、「データ検索表示」と「データ削除表示」では、同じ「UserForm2」を表示させるようにしている(8行目と12行目)。その際、「データ検索表示」ではflagに「False」を指定し(7行目)、「データ削除表示」ではflagに「True」を指定している(11行目)。このflagの値によって、表示されるフォームで「削除」ボタンを表示させたり、非表示にしたりしているわけだ。
各UserFormを表示するには、Showメソッドで表示ができる。
Excelを起動すると同時にフォームを表示するには
最後にExcelを起動すると同時に「メニュー」シートが選択され、メニューが表示される方法を解説しておこう。これについては、連載第10回「ブックの操作とイベント処理&VBAのエラー処理」の「ブックのイベント処理」でも解説しているので、そちらも参照してほしい。
プロジェクト内の「Microsoft Excel Object」フォルダを展開すると、「ThisWorkbook」というのがある。これをクリックしてリスト3のコードを記述する。
Option Explicit Private Sub Workbook_Open() Worksheets("メニュー").Select End Sub
WrokbookのOpenメソッドに、「メニュー」シートを選択するコードを書くだけでOKだ。WorkbookのOpenメソッドの表示の仕方は図15を参照してほしい。
次回は最終回、印刷とPDF化
今回はこれで終わりだ。「データ検索」と「データ削除」では同じフォームを使い、どのように「削除」ボタンの表示、非表示を行っているか理解できたのではないだろうか。
またメニューの作り方についても細かく解説した。このような方法で各自が、自分なりのメニューを作ればいいと思う。
またExcelのシート内にメニューを作らずに、フォームでメニューを作成することももちろん可能だ。Excelを開くと同時にメニューフォームを表示させて、そこから各メニューを実行することもできる。ぜひ読者自身が挑戦して作ってみてほしい。
次回は最終回で、「印刷」関連のVBAについて解説する。お楽しみに。
■更新履歴
【2016/10/24】Windows 10、Excel 2016に対応しました。
参考書籍
著者プロフィール
PROJECT KySS 薬師寺 国安(やくしじ くにやす)
1950年生まれ。フリーVBプログラマ。高級婦人服メーカーの事務職に在職中、趣味でVBやActiveXに取り組み、記事を執筆。2003年よりフリー。.NETやRIAに関する執筆多数。Windowsストアアプリも多数公開中(約270本)。
Microsoft MVP for Development Platforms - Client App Dev (Oct 2003-Sep 2012)。
Microsoft MVP for Development Platforms - Windows Phone Development(Oct 2012-Sep 2013)。
Microsoft MVP for Development Platforms - Client Development(Oct 2013-Sep 2014)。
PROJECT KySSは、1997年に薬師寺聖と結成したコラボレーション・ユニット
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
- Excelマクロ/VBAリファレンス用途別・キーワード別一覧超まとめ
- ピボットテーブルとは何か──「そもそも、何をする機能か」を理解する
Excelを通じて「ピボットテーブル」の基礎を学び、データ分析を実践するまでを習得する本連載。初回はピボットテーブルの基礎と、「どんなことができるのか」を解説する。 - どんなビジネスにも欠かせないリレーショナルデータベースの基礎知識と作り方――テーブル、レコード、フィールド、主キーとは
Accessを通じて、初心者がリレーショナルデータベースやSQLの基本を学び、データベースを使った簡単なシステムの作り方を習得する本連載。初回はデータベースの基本を理解し、Accessを使い始めてみよう。