『チェックボックスをチェックした項目のみ表示』(しょう) すみません、過去の質問を検索し、調べましたが、自分のやりたいことかわからなかったので、 質問させていただきます。(OSはXP、Excel2003使用) 例えば・・・   A 1 □調査 2 □分解 3 □手入れ 4 □組立て とSheet1にありまして(□はチェックボックス)、分解(A2)と組立て(A4)にチェックを 入れたとして、Sheet2に   A 1 分解 2 組立て とチェックした項目のみ表示させたいのですが・・・可能でしょうか? 過去の質問と同様のがありましたら、「これを見ろ」とご指摘ください。 ---- それぞれのチェックボックスにチェックが入っているかいないかの判定はセルと値をリンクさせておくことで 判定できるけど、そのキャプションは関数では取得できないのでは? (詳しくないので、もしかしたら、こうしたらできる!とおしかりを受けるかもしれないけど) どこかに、各チェックボックスのキャプションと同じものを、その順番通りに記述したリストを準備しておけば 関数エキスパートさんだったら、できると思うけど。 (ぶらっと) ---- フォームのチェックボックスならぶらっとさんがおっしゃっているように セルと値をリンクさせることができるので、それを利用します。 A1セルにあるチェックボックスをCtrlキーを押しながらクリック→数式バーに =B1 A2セルにあるチェックボックスをCtrlキーを押しながらクリック→数式バーに =B2 と上記作業を繰り返して、Sheet2のA1セルに =IF(COUNTIF(Sheet1!B$1:B$4,TRUE)Sheet2は何もしなくていいのですか? Sheet2のセルへの書き込みは、アップしたコードの中で行っている。 Sheet1のチェックボックスにチェックを付けたり外したりした瞬間に Sheet2に、その時点での状況から チェックがついたキャプションを書きこんでいるんだけど?? 追記 >数式バーには「=EMBED("Forms.CheckBox.1","")」が表示されてます この説明から、チェックボックスはActiveXコントロールだと理解しているんだけど それは大丈夫? (ぶらっと) ---- 何度もすみません。 はい、デザインモードにし、チェックボックスをワンクリックすると、 「=EMBED("Forms.CheckBox.1","")」が表示されます。 あっ、推測なのですが、僕が使用しているチェックボックス(ActiveXコントロール?)は オートシェイプみたいに自由に移動できるやつなのですが・・・これが悪さしているのでしょうか? だからセルA1に情報はなく、セルA1の上にチェックボックスがあるイメージですかね。 (しょう) ---- う〜ん・・・・と・・・ まず、試してくれているのは後でアップしたシートモジュール版のコードだよね? (最初にアップした Test2 は、(???)さんのコードに対する意見ということで無視してね) で、コメントしたように、配置する順番でインデックスがふられるので、インデックスは相手にせず あくまで、上から順番に、その名前を For Each ckBox In Array("CheckBox1", "CheckBox2", "CheckBox3", "CheckBox4") これで指定してもらっている。これは大丈夫? (ぶらっと) ---- はい、各チェックボックスのプロパティを見ると上から順にオブジェクト名が 「CheckBox1」「CheckBox2」「CheckBox3」「CheckBox4」となっています。 (しょう) ---- まず、VBE画面で 表示->イミディエイトウィンドウ で、下のほうに イミディエイトウィンドウ を表示。 で、そのウィンドウの中に ?Application.EnableEvents といれてエンター。 その下の行に True または Fasle がでる。 もし、False がでたら、その下の行に Application.EnableEvents = True といれてエンター。 これで、もう一度、Sheet1でチェックボックスを選んでくれる? で、もし、 ?Application.EnableEvents といれてエンターで、True とでたとしたら、 Private Sub CheckBox1_Click() Sample End Sub この Samle と記述してある行にブレークポイントを設定してから、Sheet1の CheckBox1 のチェックを変更してくれる? ブレークポイントは、この Sample の行をクリックして F9 を押すことで設定(あるいは設定解除)ができる。 ここが黄色くなって止まるはずなので。 とまったら、その後、F8 を押しながらステップ実行していって、どんな順番でコードが実行されるか確認お願い。 (ぶらっと) ---- 先ほどは的外れな回答失礼しました。 ところでこちらで試してみたところ、ぶらっとさんのコード(Sub Sampleから始まるコード)でうまくいきました。 標準モジュールにコードを貼り付けたり、チェックボックスが配置されているのはSheet1なのにSheet2のところに コードを貼り付けているということはありませんよね? (se_9) ---- ほんとうに手間を掛けさせてしまい申し訳ありません。 まず、「True」となりました。 Sampleの行が赤茶色になり、左側に●ある状態です。 F8を押すとSampleの上の「Private Sub CheckBox1_Click()」が黄色になり、 次に「Sample」→ 一番上の「Sub Sample()」→「Sheets("Sheet2").Columns("A").ClearContents」 の後に「実行時エラー'9': インデックスが有効範囲にありません」 と出ました。 どうですか? (しょう) ---- se_9さん、「VBAProject(ファイル名)」の下の「Microsoft Excel Objects」のフォルダの下の Sheet1に入力されています。 (しょう) ---- >「実行時エラー'9': インデックスが有効範囲にありません」 "Sheet2" というシートはちゃんとある? 追記 もしかしてVBE画面の左上のプロジェクトエクスプローラに Sheet2(○○○○) となっているということは? この ○○○○ がシート名なので、もし、こうなっているなら 、2か所ある Sheets("Sheet2") を Sheets("○○○○") に変更してね。 (ぶらっと) ---- あっ、出ました! 1回ファイルを保存して閉じ、もう一度開きなおし(マクロは有効に)たところ、 Sheet2に出ました。 ありがとうございます。まさに思い通りのやり方です。 (ぶらっと)さん、(se_9)さん、(???)さん、ほんとうにありがとうございます。 (しょう) ---- でも、たまにチェックしてもSheet2に表示されない時がありますが、 どのようなことが考えられますか? (しょう) ---- チェックボックス4の Private Sub CheckBox4_Click() Sample End Sub 「Sample」が抜けていたので、表示されない時があったみたいです。すみません。 (しょう)