• ベストアンサー

エクセルでこんなことはできますか?

たとえば、Sheet1であるボタン(図形描画などで作成)をクリックすると、男か女かにチェックする欄が出る。 この欄でどちらか一方にチェックすると、Sheet2にどちらの性別に何回チェックされたかがわかる。 このようなことをしたいのですが、どうすればいいのかまったくわかりません。何かご助言があればお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • ape5
  • ベストアンサー率57% (85/148)
回答No.2

まず流れとしては次のようです。 1.オプションボタンを男用女用の2個つくり、コマンドボタンを1個配置する。 2.デザインモードの終了 3.VBAを立ち上げマクロを作る。 こんな感じです。 では、それぞれを見ていくと、 1-1 メニューの「表示」ー「ツールバー」ー「コントロールツールボックス」を表示 1-2 オプションボタンを2個作り、コマンドボタンを1個作る。 1-3 オプションボタンで右クリックでプロパティで開いてCaptionをそれぞれ「男」と「女」に設定し、オブジェクト名をそれぞれ「Male」と「Female」に設定 1-4 コマンドボタンのプロパティを開いてCaptionを「表示」にする。 2-1 メニューの「表示」ー「ツールバー」ー「デザインモードの終了」を選択 3-1 以下のマクロをそれぞれのモジュールやシートのところに書く 標準モジュール--------------------- Sub Auto_Run() Worksheets(1).Male.Visible = False Worksheets(1).Female.Visible = False Worksheets(1).Male.Value = 0 Worksheets(1).Female.Value = 0 End Sub ----------------------------------- シート1--------------------------- Private Sub CommandButton1_Click() Male.Value = 0 Female.Value = 0 Male.Visible = True Female.Visible = True End Sub Private Sub Female_Click() Worksheets(2).Cells(2, 2).Value = Worksheets(2).Cells(2, 2).Value + 1 Male.Visible = False Female.Visible = False End Sub Private Sub Male_Click() Worksheets(2).Cells(1, 2).Value = Worksheets(2).Cells(1, 2).Value + 1 Male.Visible = False Female.Visible = False End Sub ----------------------------------- 以上でできると思います。 何かわからないところがあればレスいただければ答えたいと思います。

ryoppa
質問者

お礼

非常にわかりやすい回答ありがとうございます。 やってみると、イメージにより近いものができて非常に満足しています。 1つわからないことがあります。 3-1で書く「標準モジュール」の内容は マクロ-VBEの挿入-標準モジュールを開いたところに書けばよろしいのでしょうか? 忙しいとは思いますが、よろしくお願いします。

ryoppa
質問者

補足

すみません。もう1つ伺いたいことがあって補足しました。 このシート1や標準モジュールにあるValueの意味がよくわかりません。これはどのような意味を持つのでしょうか? もし、ご存知でしたらあわせてお願いします。

その他の回答 (3)

  • NCU
  • ベストアンサー率10% (32/318)
回答No.4

シート上のコマンドボタンをクリックするとユーザーフォームが起動する。ユーザーフォーム上にはオプションボタン(2個)があって、どちらかをクリックすれば、その選択によって Sheet2の 所定のセルの値に1を加算する。 それだけですね。 たいていのVBA本には似たようなサンプルが載っていると思いますし、ネットで検索してもすぐわかります。

ryoppa
質問者

お礼

ありがとうございます。参考になりました。

  • ape5
  • ベストアンサー率57% (85/148)
回答No.3

標準モジュールに書くマクロはおっしゃってるところでOKですよ。 それとValueとは、「値」です。 セルなら、ActiveCell.Valueでフォーカスのあるセルの値を意味し、 OptionButton1.Valueなら、オプションボタンの値を意味します。 TextBoxならTextbox1.Textになりますよ。

ryoppa
質問者

お礼

追加のアドバイスをありがとうございます。 標準モジュールにマクロを書き込んだのですが、保存したテキスト?が見れなかったので心配してました。 貴重な意見をありがとうございます。勉強にさせていただきます。

  • koto1033
  • ベストアンサー率53% (21/39)
回答No.1

簡単かどうか分かりませんが、ご参考までにどうぞ。 1.空いているセル(例えばB1とB2)にそれぞれ「男」「女」と入れておく。 2.チェックしたい列(例えばA1~A10)を選択 →データの「入力規則」をクリック。 3.「設定」タブにて「入力値の種類」を「リスト」に変更 →「元の値」という項目が表示されるので、 「=$B$1:$B$2」と入力(もしくはB1とB2を選択)。 これでチェック欄が出来ました。 あとは、sheet2で、関数COUNTIFを使用。 4.「=COUNTIF(Sheet1!A1:A10,Sheet1!B1)」と入れてください。 ※「もし、『男』だったら何人?」という意味の関数です。

ryoppa
質問者

お礼

早速のアドバイスありがとうございます。 このとおりやればできました。 追加質問で申しわけないのですが、koto1033さんがおっしゃられてた「もし、『男』だったら何人?」に「もし、『女』だったら何人?」をSheet2でいれようとしたのですがCOUNTIFのB1をB2に変えるだけではうまくいきませんでした。どうすればよろしいでしょうか?

ryoppa
質問者

補足

すみません。初歩的なミスでした。トラブルは解決できました。重ねてお礼します。ありがとうございました。

関連するQ&A