• ベストアンサー

Excel フォームの登録

Excel97でチェックボックスにチェックを入れてもらうと自動的に選択した料金が違うセルに表示できるようにしたいのですが、その場合マクロの登録をすればよいのではないかとおもうのですが、どうすればいいのか教えて下さい。

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

  • ベストアンサー
  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.1

>チェックボックスにチェックを入れてもらうと自動的に・・・ とありますが、チェックを入れると自動的に何かを決定できるのはオプションボタンでしょう。 オプションボタンとして書いてみます。 >その場合マクロの登録をすればよいのではないかとおもうのですが・・・ オプションボタンの機能だけを使うならマクロ不要です。 質問について考えると、 (1)表示→ツールバー→フォームのオプションボタン を使う (2)表示→ツールバー→Visual Basicのコントロールツールボックスのオプションボタン を使う (3)ユーザーフォームを使用してオプションボタン を使う の3種類が考えられます。(3)はフォームの表示でコードを書く必要がありますが、(1)、(2)の場合はマクロ不要です。 (1)の場合、例えばオプションボタンを3個使用して      1個目のオプションボタンを選択したらセルF2に『100』を表示      2個目のオプションボタンを選択したらセルF2に『200』を表示      3個目のオプションボタンを選択したらセルF2に『300』を表示 するとします。   オプションボタンを1つ選んで、右クリック→コントロールの書式設定→コントロールタブ   リンクするセルにJ2を入力(J2は例です。選択結果を格納する場所を指定するわけです)   選択状況を表示したいF2に=CHOOSE(J2,100,200,300)と入力します。 (2)の場合、オプションボタンを3個貼り付けます。機能は(1)と同じとします。      1個目のオプションボタンを選択して右クリックしてプロパティを選択。      LinkedCellにJ2を入力。      同様に2つ目のオプションボタンにはLinkedCellにJ3を入力。      同様に3つ目のオプションボタンにはLinkedCellにJ4を入力。      K2に =IF(J2=TRUE,100,0)      K3に =IF(J3=TRUE,200,0)      K4に =IF(J4=TRUE,300,0)      F2に =SUM(K2:K4)  とします。 (3)の場合はフォームの表示のためにコードを書く必要がありますがオプションボタンを選択した時の処理は(2)と同じでしょう。

budouaji
質問者

補足

早速回答していただいてありがとうございます。教えていただいた方法(1)でしてみて確かにこれでできたのですが、1つ質問があります。リンクするセルは1つしか選べないんでしょうか。というのも質問が何問かあり1つの質問に対して1つのリンクというふうにしたいのですができますか?例えば質問1でオプションボタンを5つ使います。質問2で新たにオプションボタンを使用して選択してもらうばあいどのように設定すればいいんでしょう?質問1と質問2はまったく別のものとして考えたいのですがうまくいきませんでした。このような場合(1)ではできないのでしょうか?できるだけ簡単な方法があれば教えて下さい。よろしくお願いします。

その他の回答 (3)

  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.4

>グループボックスの外の線は消す事ができないんでしょうか? 基本的にはそのようなオプションはないはずです。でも、見えなくすることはできます。 (1)グループボックスのテキストはテキストの編集で消去してしまう (2)グループボックスより大きいオートシェイブの四角形を描く。 (3)この四角形の書式を、塗りつぶしは自動、線は線なしにする。 (4)この四角形をグループボックスに重ねる。 (5)四角形を右クリックし、順序→最背面へ移動。 (6)グループボックスを右クリックし、順序→最背面へ移動。 下から、グループボックス→四角形→オプションボタンの順に重ねるわけです。 シートの枠線も非表示(ツール→オプション)にしてしまえば違和感もなくなります。 このフォームのグループボックスやオプションボタンを使うと、それが選択(編集)状態になってしまうことがあります。これを回避するには、シートを保護します。ただ、オプションボタンで変更になるセルは保護を解除しておく必要があります。 上記はフォームのオプションボタンを使う場合ですが、コントロールツールボックスのオプションボタンを使えば、プロパティのGroupNameを『質問1』や『質問2』にすれば区分けができ、グループボックスを使う必要はありません。編集状態になることもありません。 フォームのコントロールは古く、使い勝手も悪いので、私は、コントロールツールボックスのコントロールを使うようにしています。

  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.3

>質問2で新たにオプションボタンを使用して選択してもらうばあい >どのように設定すればいいんでしょう? 表示→ツールバー→フォームでフォームのダイアログの中にグループボックス(小さいxyzがある)があります。 これをシートに貼り付けて、この中に必要な数のオプションボタンを配置します。 グループボックスの中にあるオプションボタンはそれだけで独立なグループになり、グループボックスの外の他のオプションボタンの干渉を受けません。 したがって、  質問1用のグループボックスを配置    →その中に質問1に必要な数のオプションボタンを配置    →リンクするセルを決定    →表示用の算式を入力  質問2用のグループボックスを配置    →その中に質問2に必要な数のオプションボタンを配置    →リンクするセルを決定    →表示用の算式を入力  質問3用・・・・   :   : という手順でできるでしょう。

budouaji
質問者

補足

ありがとうございます。できました(笑顔)何度も聞いて申し訳ないんですが乗りかかった船だと思って助けてください。グループボックスの外の線は消す事ができないんでしょうか?いろいろこころみたけどだめでした。無理ならしょうがないんですけどなにかいいアドバイスがあれば教えてください。

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.2

表示-ツールバー-VisualBasic-コントロールツールバー(金槌)を順にクリックする。コントロールツールボックスから、 Sheet1にチェックボックスをドラッグアンドドロップ。もう一つSheet1にチェックボックスをドラッグアンドドロップ。次ぎに ツール-マクロ-VisualBasicEditorを順にクリックする。 プロジェクトエクスプローラーのSheet1をダブルクリック General側はCheckBox1をクリック、Declaration側はClickedをクリック ------- Private Sub CheckBox1_Click() ActiveCell = 100 End Sub ------- Private Sub CheckBox2_Click() ActiveCell = 200 End Sub を入力し、実行。 Sheet1の望みのセルをクリックしておいて、CheckBox1をクリックすると100、CheckBox2をクリックすると200とセットできる。 CheckBoxは必要なだけ増やし、ActiveCell=の右辺に値段をセット。

関連するQ&A