連載
» 2016年10月24日 05時00分 公開

Excelマクロ/VBAで始める業務自動化プログラミング入門(15):Excel操作で日が暮れないようにデータ削除処理とメニュー画面を作る&MsgBox関数の使い方 (3/3)

[薬師寺国安,PROJECT KySS]
前のページへ 1|2|3       

タイトルの作成

 次にタイトルを設定する。「C3」に「個人情報管理」と入力し、「C3」から「G3」までを選択して、マウスの右クリックで表示させる「セルの書式設定」を選択する。

 「配置」タブを選択して、「文字の制御」から「セルを結合する」にチェックを入れて[OK]ボタンをクリックする(図11)。

図11 「セルの書式設定」から「セルを結合する」を選択

 C3〜G3までのセルが結合されて表示される。結合されたセルを選択して、Excelメニューから[書体]に「游ゴシック」、[文字サイズ]に「24」、太字とし、[背景色]を「赤」で塗りつぶし、[文字色]を「黄色」、文字を「中央揃え」と指定する(図12)。

図12 タイトルの書式設定を完了した

枠線を消してアプリっぽくする

 これでメニュー画面は完成した。しかし図4で紹介したメニューと、どこか雰囲気が違っているに気付かれるだろう。図4では、シート内のセルの枠線が無いのだ。このセルの枠線を消すには、Excelメニューの[表示]から[目盛線]のチェックを外すと、シートの中から枠線が消える(図13)。これで、がぜんアプリケーションのメニューらしく見える。

図13 シート内のセルの枠線を消す

各メニューにマクロを関連付ける

 では、最後の仕上げとして、各メニューにマクロを関連付ける。今回までの内容では、「印刷設定」と「印刷またはPDF化」のマクロはまだ作成していないため、上3つのメニューにマクロを登録する。一例として「データ入力」にマクロを登録する方法を解説する。

 まず「データ入力」を選択し、マウスの右クリックで表示されるメニューから[マクロの登録]を選択する。すると図14のように[マクロ登録]の画面が表示されるので、「データ入力表示」を選択して[OK]ボタンをクリックする。

図14 「データ入力」に「データ入力表示」を選択

 同様に、「データ検索」には「データ検索表示」、「データ削除」には「データ削除表示」を選択する。

 これで、上から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
リスト2 「Module1」内に記述するコード

 前回も解説したように、最初にブール型のパブリック変数「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
リスト3 Excelを開くと同時に「メニュー」を表示するマクロ

 WrokbookのOpenメソッドに、「メニュー」シートを選択するコードを書くだけでOKだ。WorkbookのOpenメソッドの表示の仕方は図15を参照してほしい。

図15 Workbook_Openメソッドコードの追加方法

次回は最終回、印刷と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年に薬師寺聖と結成したコラボレーション・ユニット


前のページへ 1|2|3       

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

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

メールマガジン登録

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