チェックボックスの選択結果を調べるには?

Question 22.5 Previous Next
いつも、勉強になります。さて、質問します。
userformを作ってコマンドボタンとか、ぽちっと黒●を押すと、あらかじめ名前をつけた印刷範囲選択、設定できて、すぐ印刷できたり、としたいのですが、マクロとどうつながるのかわかりません。

以前ロータスで作成した表がありまして、これはマクロが組んでありました。内容はまず空の月次収支表、月割の予算表、月割の計画表が横並びにあり、課毎にいくつも縦並びに入っています。
マクロでコマンドボタンを押すと、チェックボックス様のものが(ロータスではダイアログボックス?)でて来て、月を選ぶと選んだ月の予算、計画が空の収支表に入り(関数@hlookupとかで探して)、次のボタンを押すと課を選ぶチェックボックスが出て選び、次のボタンで印刷(収支表には課毎に印刷範囲に名前をつけてます)をする、,,,というものでした。

これを、EXCELに変換したあと、もちろんマクロは動くはずはなく、データをいれておくのみとなってます。
チェックボックスかオプションボタンで作れるでしょうか?マクロをボタンに記録させて、作るなら私でもできるのですが、そうすると、ボタンだらけで美しくないのです。
ボタンでuserformを出すとこまでは、できました。(今日ですが) 範囲はrangeで設定するのだということも、今日わかりました。 (でも、使えるところまで行っていません)

あと、HPのチェックボックスを使ったサンプルを実行してみたのですが、 チェックボックスの行高を高くする方法はありますか?どうかヒントを宜しくお願いします。
Answer   Copyright (C) 1999.11.15 永井善王
「チェックボックスの行高を高くする方法」についてですが、「行高」の意味がわからないので、回答が違っているかも知れません。
いろいろな方法があると思いますが、まず、Visual Basic Editor画面で Userformを表示しておいて、サイズを変更したいコントロールをマウスでクリックして選択し、プロパティウィンドウの「Height」に表示されている数値を変更してみてください。くわしく知りたければ別途、解説書で勉強してください。

本題の回答に入ります。あなたがロータスからExcelに変換したシートのイメージを、下図のとおり作ってみました。
変換したシート
「月次収支表、月割の予算表、月割の計画表が横並びにあり、課毎にいくつも縦並びにあります」このサンプルは月次収支表が空ではなくて、すでに数字が表示されています。

その理由は、D11とE11セルに図示されているとおりの HLOOKUP の数式が、すでに入力されているからです。画面の都合で省略しましたが、D12:E14セルも同様です。 また、D16:E16セルとF11:F14セルにも別の数式が入力してあります。

F9セルに「4月」と表示されています。例えば、D11セルの HLOOKUP関数は、F9セルの内容を G10:I10セルで検索して、一致した列の 同じ行の値をセットしてくれます。よって、F9セルに「5月」をセットすれば、予算表の5月の数値を取り出してくれます。E11セルの HLOOKUP関数が計画表の月を検索して、その月の数値を取り出す式であることが分かりますか。数式の詳細は、サンプルブックをダウンロードして見てください。

月を選択できるユーザーフォームを作ることができれば、F9セルに希望する月をセットすることが可能になります。早速、下図のサンプルのように、月をチェックボックスで作ってみましょう。ついでに、課の選択用も作っておきます。
ユーザーフォーム
「月の選択」と「課の選択」は、同じユーザーフォームで可能です。
作り方のポイントを説明します。
1) ユーザーフォームにフレームを描く。

2) チェックボックスを12個描いて、キャプションを 4~翌3月、または、1~12月にする。

3) 「課の選択」用に、1)、2)と同様にして描く。
 (オプションボタンにして趣を変えてみます)

4) 「印刷」ボタンと、「キャンセル」ボタンを描く。
番
左図は、フレームのタイトルの変え方です。
この例では、Captionに「月と課を選択して…」と入力しました。

用意するマクロは、大きく分けると4つです。
 1) ユーザーフォームを表示するマクロ
 2) ユーザーフォームの「印刷」ボタンに登録するマクロ
 3) ユーザーフォームの「キャンセル」ボタンに登録するマクロ
  (コードの作成は省略)
 4) チェックボックスの選択結果を調べるマクロ

1)のマクロは標準モジュールに、2)~4)はユーザーフォームのコードに記述します。

質問には、「あらかじめ名前をつけた印刷範囲 … すぐ印刷」とありますが、上図のシートからは、ちょっとイメージできないので、回答のサンプルブックでは Rangeで範囲選択することにしてあります。根気よく研究して、その部分のマクロコードを置き換えてください。

ユーザーフォームを表示するマクロについては、あなたは「ボタンでuserformを出すとこまでは、できました」そうで必要ないようですね。このHPにも、「ユーザーフォームのオプションボタンで選択するには」にある、サンプルブック「アクティブプリンターを選択する」がありますので、必要な場合は参考にしてください。
サンプルブックのダウンロードは ここをクリック  (YNxv98b_checkbox.xls 67KB)
※ 一旦、ブックをハードディスクに保存し、後で改めて開いてから実行してください。

Excel VBA Macro