HOME > VBA広場 > Excel VBA ビギナーズ > 第2回 ボタンクリックでマクロを実行 2/4

第2回 ボタンクリックでマクロを実行 2/4

第2回 ボタンクリックでマクロを実行| 1/4  2/4  3/4  4/4 

マクロの記録

マクロを作る一番簡単な方法は『マクロ記録』機能を使う方法です。サンプルで使うマクロには、「オートフィルタ」「行の削除」「ショートカットキーを利用したセル範囲の選択」というエクセルの3つの基本機能を利用しています。
今回のようにセル範囲の選択にショートカットキーを利用すると、マクロ実行時には実行時の状態からショートカットキーを使った場合と同じ結果になります。
一方、マウスでセル範囲を選択した場合は、そのセル範囲が記録されるため、マクロ実行時には常に同じセル範囲が選択されます。前者はセル範囲が変動するとき、後者は同じセル範囲に対してマクロを実行したいときに利用しましょう。

オートフィルタを設定

サンプルファイル"スケジュール管理.xls"を開き、あらかじめ表にオートフィルタを設定し、実行日を抽出できるように設定しておきましょう。

  1. 表内の任意のセル(ここではセルA1)を選択する。
  2. [データ]メニューの[フィルタ]から[オートフィルタ]を選択すると、先頭行の各項目に▼ボタンが表示される。
    ▼図02-01 オートフィルタを設定
    図02-01 オートフィルタを設定

    【Excel2007の場合】

    Excel2007ではメニューバーでなく、リボンを使用します。[フィルタ]ボタンは[データ]タブ内に用意されています。
    ▼図02-02 Excel2007での[フィルタ]ボタン
    図02-02 Excel2007での[フィルタ]ボタン

マクロの記録を開始する

次に、オートフィルタで空白行を抽出し、削除する処理をマクロに記録していきましょう。

  1. [ツール]メニューの[マクロ]から[新しいマクロの記録]を選択し、[マクロの記録]ダイアログボックスを表示する。
    ▼図02-03 [マクロの記録]ダイアログボックスの表示
    図02-03 [マクロの記録]ダイアログボックスの表示

    【Excel2007の場合】

    Excel2007ではメニューバーでなく、リボンを使用します。[マクロ]ボタンは[表示]タブ内に用意されています。
    ▼図02-04 Excel2007での[マクロの記録]ダイアログボックスの表示
    図02-04 Excel2007での[マクロの記録]ダイアログボックスの表示

    また、ステータスバーのボタンを使って表示することもできます。

    ▼図02-05 Excel2007での[マクロの記録]ダイアログボックスの表示(2)
    図02-05 Excel2007での[マクロの記録]ダイアログボックスの表示(2)
  2. [マクロ名]ボックスに「DelFinish」と入力する。
    ※マクロ名は記録した内容を示す、わかりやすいものにしておくとよい。
  3. [説明]ボックスには、「実行日が入力されている行を、一括削除する」と入力する。
    ※マクロの内容がすぐにわかる説明文を記入しておくとよい。
  4. [OK]ボタンをクリックし、マクロ記録を開始する。
    ▼図02-06 [マクロの記録]ダイアログボックス
    図02-06 [マクロの記録]ダイアログボックス
  5. セルA2を選択する。
  6. セルA2を選択した状態で[Ctrl]キーと[Shift]キーを押しながら[End]キーを押し、先頭の見出し行を除いた表全体を選択する。
    ▼図02-07 記録開始
    図02-07 記録開始
  7. 項目「実行日」の右側にある▼ボタンをクリックする。
  8. 表示されたリストの中から[(空白以外のセル)]を選択する。
    ▼図02-08 実行日のある行を選択
    図02-08 実行日のある行を選択

    【Excel2007の場合】

    Excel2007で表示されるリストには[(空白以外のセル)]がありません。[(空白セル)]チェックボックスをオフにすると、空白セルを除いたデータだけ抽出できます。
    ▼図02-09 Excel2007で実行日のある行を選択
    図02-09 Excel2007で実行日のある行を選択
  9. 実行日のある行だけが表示された状態で、[Alt]キー+[;]キーを押す。表示されている行だけを選択するショートカットキーなので、傍目には分かりにくいが実行日のない行の選択は解除される。
    ▼図02-10 表示されている行のみを選択
    図02-10 表示されている行のみを選択
  10. [編集]メニューから[行の削除]を選択する。
    ▼図02-11 選択行を削除
    図02-11 選択行を削除

    【Excel2007の場合】

    Excel2007ではメニューバーではなく、リボンを使用します。[削除]ボタンは[ホーム]タブ内に用意されています。
    ▼図02-12 Excel2007での選択行の削除
    図02-12 Excel2007での選択行の削除
  11. 確認メッセージが表示されるので、[OK]ボタンをクリックし、実行日が入力されている行をすべて削除する。 (Excel2007では確認メッセージは表示されません)
    ▼図02-13 確認メッセージ
    図02-13 確認メッセージ
  12. 項目「実行日」の右側にある▼ボタンをクリックする。
  13. 表示されたリストの中から[(すべて)]を選択し、すべてのデータを表示する。実行日が空白のデータだけが残っていることが確認できる。
    ▼図02-14 表を元の状態に戻す
    図02-14 表を元の状態に戻す

    【Excel2007の場合】

    Excel2007の場合はリスト内の[すべて]チェックボックスをオンにし、[OK]ボタンをクリックします。
    ▼図02-15 Excel2007での表を元の状態に戻す操作
    図02-15 Excel2007での表を元の状態に戻す操作
  14. セルA1を選択する。(記録すべき作業はこれで完了です)
  15. [記録終了]ボタンをクリックし、マクロ記録を終了する。
    ▼図02-16 記録終了
    図02-16 記録終了

    【Excel2007の場合】

    Excel2007では[記録終了]ツールバーは表示されません。マクロの記録を終了するには、ステータスバーの[記録終了]ボタンをクリックします。
    ▼図02-17 Excel2007での記録終了
    図02-17 Excel2007での記録終了

マクロ記録が完了したら、マクロが思い通りに動くかどうか、試しに実行してみましょう。

サンプルファイルには、まったく同じ表を"バックアップ"シートとして用意してありますので、コピーすれば何度でも試すことができます。

  「DelFinish」マクロの実行方法
1) "バックアップ"シートをコピーする
2) セルA1を選択する
3) [データ]メニューの[フィルタ]から[オートフィルタ]を選択する
  * Excel2007では、[データ]タブから[フィルタ]を選択する
4) [ツール]メニューの[マクロ]から[マクロ]を選択して[マクロ]ダイアログボックスを表示する
  * Excel2007では、[開発]タブから[マクロ]ボタンをクリックして[マクロ]ダイアログボックスを
   表示する
5) 「DelFinish」マクロを選択し、[実行]ボタンをクリックする

もし、サンプルのようにならないのであれば、記録した手順に誤りがある可能性が高いので、再度記録をしなおしてみましょう。

次のページでは、更に使いやすく手軽に実行できるよう、作成したマクロをボタンに登録する手順をご案内します。

第2回 ボタンクリックでマクロを実行| 1/4  2/4  3/4  4/4