Windows TIPS
[Office Master]
  Windows TIPS TOPへ
Windows TIPS全リストへ
内容別分類一覧へ

Excelのシートをワンクリックで初期化する

解説をスキップして操作方法を読む

山田 祥寛
2003/07/12
 
対象ソフトウェア
Excel 2000
Excel 2002
Excelで作成した電子伝票にクリア機能を付加してみよう。
複雑な伝票を何度も使い回す場合、使用するたびに以前の内容を手作業で削除するのは煩雑である。しかし、VBAを使用すれば簡単に、かつ必要な部分だけをクリアすることができる。
またワークシート上に配置したコントロール部品を印刷させない方法や、メッセージ・ボックスの使用方法についても紹介する。
 
解説

 Excelで作成した電子伝票を再利用する場合、使用するたびに以前の入力内容を消去しなければならないことに煩雑さを覚えている方はいないだろうか。単純なリスト形式の表ならば、手作業で削除してもさほど面倒ではないが、複雑なレイアウトの伝票から必要な個所だけを消去するのは意外と手間なものだ。

 しかし、本サンプルを利用することで、伝票上のボタンを1つクリックするだけで、伝票を入力前の初期状態に戻すことができる。ここでは「請求書」テンプレートを例に、構築の手順を紹介してみよう。


操作方法

 それでは、さっそく、作成までの流れを見てみることにしよう。

手順1―「請求書」テンプレートを用意する

 「請求書」のテンプレート・イメージは以下のとおりだ。

Excelで作成した「請求書」フォームの例
請求書のような定型伝票をExcelで作成して管理しているユーザーも多いだろう。データを入力する場合は、左上の[クリア]ボタンをクリックすると、1度使用した電子伝票の内容をクリアして、次の入力に備えることができる。
  このボタンをクリックするとユーザー入力フィールドがクリアされる。
  これらのフィールドはユーザーが入力する部分。

 取りあえずは、上記のように伝票の様式をワークシート上でレイアウトしてみてほしい。今回は、伝票の内容自体はあまり重要でないので、詳細については上のサンプルExcelファイルなどを参考にして作成していただきたい。

手順2―コマンド・ボタンを配置する

 表を作成したら、[クリア]のトリガーとなるコマンド・ボタンを設置しておこう。プロパティとしては、今回は以下の内容を変更してみた。オブジェクト名とは、プログラムの中でこのコマンド・ボタンを参照するときに使用される名前を指す。

プロパティ名 設定値
(オブジェクト名) btnClear
Caption クリア
PrintObject False
変更するプロパティ
これらのプロパティを変更しておく。PrintObjectプロパティは、このオブジェクトを印刷するかどうかを決めるプロパティ。

 PrintObjectプロパティがFalseに設定されている点に注目してほしい。PrintObjectプロパティは対象のオブジェクト(ここではコマンド・ボタン)がワークシート印刷時に印刷の対象に含まれるかどうかを決定する。今回のように、伝票上に配置されたオブジェクトを印刷時には表示したくなければ、Falseに設定しておけばよい。

手順3―該当セルをクリアするためのコードを記述する

 さあ、外枠ができたら、いよいよコードを記述してみよう。

 デザイン・モードの状態(「コントロール ツールボックス」メニュー・バーの三角定規が選択された状態)で、シート上に配置したコマンド・ボタンをクリックすると、Visual Basic Editorが起動するはずだ。コード・エディタ上に、すでにイベント・プロシージャの骨格は生成されているはずなので、それに追記する形で以下のコードを記述してほしい。

Private Sub btnClear_Click()
  If MsgBox("本当にクリアしても宜しいですか?", vbYesNoCancel, "テンプレートのクリア") = vbYes Then
    Range("C3,H2,B12,A16:H38,B42:C42,B44:C44,B46:C46,B48:C48").Select
    Selection.ClearContents
    Range("A1").Select
  End If
End Sub

 btnClear_Clickは、コマンド・ボタンをクリックしたときに呼び出されるプロシージャだ。

 MsgBoxはVBAにあらかじめ用意された組み込み関数の1つで、画面上にメッセージ・ボックスを表示させることができる。第1引数はメッセージ・ボックスに表示されるメッセージを、第2引数にはボックス上のボタンの種類を、そして、第3引数にはタイトルをそれぞれ指定する。第2引数に指定することのできるボタンの種類は以下の通りである。これらは定数になっている。引数は各グループからそれぞれ最大1つを選び(特に不要の場合は無指定も可)、それらの合計(「vbYesNoCancel+vbExclamation」など)として表わすことができる。

グループ 定数 意味
1
vbOKOnly [OK]ボタンのみ表示
vbOKCancel [OK][キャンセル]ボタンを表示
vbAbortRetryIgnore [中止][再試行][無視]ボタンを表示
vbYesNoCancel [はい][いいえ][キャンセル]ボタンを表示
vbYesNo [はい][いいえ]ボタンを表示
vbRetryCancel [再試行][キャンセル]ボタンを表示
2
vbCritical 「警告」アイコンを表示
vbQuestion 「問い合わせ」アイコンを表示
vbExclamation 「注意」アイコンを表示
vbInformation 「情報」アイコンを表示
3
vbDefaultButton1 第1ボタンをデフォルトとして選択
vbDefaultButton2 第2ボタンをデフォルトとして選択
vbDefaultButton3 第3ボタンをデフォルトとして選択
vbDefaultButton4 第4ボタンをデフォルトとして選択
4
vbApplicationModel メッセージに応答するまで現在のアプリケーションを中断
vbSystemModel メッセージに応答するまで全アプリケーションを中断
MsgBox関数の第2引数として利用できる定数
MsgBox関数の第2引数には、メッセージ・ボックスに表示するアイコンやボタン、デフォルト選択ボタンなどを指定する。これらは定数になっており、各グループから最大1つ選んで、それらを加算して第2引数に指定する。各グループのデフォルトは、それぞれの1番上の項目になる。

 また、MsgBox関数は戻り値としてユーザーが選択したボタンの種類を返す。

定数 概要
vbOK [OK]を選択
vbCancel [キャンセル]を選択
vbAbort [中止]を選択
vbRetry [再試行]を選択
vbIgnore [無視]を選択
vbYes [はい]を選択
vbNo [いいえ]を選択
MsgBox関数の戻り値
MsgBox関数は、クリックされたボタンやユーザーの選択に応じて、これらの値を返す。

 ここでは、vbYesで判定しているので、[はい]ボタンがクリックされたときにのみ、Ifブロックの中でコンテンツのクリア処理を行う。

 ここまで理解できれば、後の処理は極めてシンプルだろう。

 Range(...).Selectメソッドで指定されたセル範囲をアクティブにした後、選択範囲の内容をクリアする(Selection.ClearContentsメソッドを呼び出す)。Range("A1").Selectメソッドは、クリア処理の終了後に、画面の先頭行にフォーカスを戻すためのコードである。

マクロの記録機能によるセルの選択

 なお、自分のオリジナルの伝票に同等の機能を実装しようとすると、以下のような記述が面倒にも思えるかもしれない。これは、伝票上のユーザー入力フィールドをすべて選択するためのコードである(伝票の内容に応じて変更すること)。

Range("C3,H2,B12,A16:H38,B42:C42,B44:C44,B46:C46,B48:C48").Select

 これを簡単に作成するためには、マクロの記録機能を利用することができる。まず[ツール]メニューから[マクロ]−[新しいマクロの記録]を実行してみよう。するとマクロの記録機能が開始される。そこで[Ctrl]キーを押しながら対象のセルをすべてアクティブにしてみよう。単独のセルを選択するにはマウスを右クリックすればよいし、範囲を選択するためにはマウスをクリックしてドラッグすればよい。すべて選択した後に、マクロの[記録終了]ツール・バー上の[記録終了]ボタンをクリックする。

 その後Visual Basic Editorを開くと、プロジェクト・ツリーの下の[標準モジュール]に「Module1」というオブジェクトができているはずなので、ダブルクリックして中身のコードを見てみよう。そこには、上記のようなコードが自動的に生成されているはずだ。必要ならばこれをコピーして、目的のプロシージャに貼り付ければよい。

 このマクロを使う方法は、VBAプログラミングにおいてコーディングを簡略化する、あるいは、使用するメソッドやプロパティが分からない場合に調査の手間を省くことができる有効なテクニックだ。ぜひ、覚えておいてほしい。End of Article

「Windows TIPS」


Windows Server Insider フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Windows Server Insider 記事ランキング

本日 月間